728x90
๋ฐ˜์‘ํ˜•

 

์ด์ „์— ๋™์•„๋ฆฌ์—์„œ ์ง„ํ–‰ํ•˜๋˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋ฆฌํŽ™ํ† ๋งํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ–๊ธฐ๋กœ ํ–ˆ๋‹ค.

์ „์—๋Š” 3์ฃผ๋ผ๋Š” ์งง์€ ์‹œ๊ฐ„๋™์•ˆ ๋ชจ๋‘ ๊ตฌํ˜„์„ ํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๊ฐ€ ํƒ„ํƒ„ํ•˜์ง€ ์•Š์•˜๊ณ , ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚œ์ƒ ์ฒ˜์Œ ์จ๋ณด๋Š” SwiftUi์™€ ํ˜ผ์šฉํ•ด์•ผ ํ–ˆ๊ธฐ์— ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๋œฏ์–ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

SwiftUI๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๋˜ ์ด์œ ๋Š”, screenTime API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‹น์‹œ์—๋Š” Github์—์„œ ๋ˆ„๊ตฐ๊ฐ€ ์‚ฌ์šฉํ•ด๋‘” screenTime API๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ–ˆ์—ˆ๋Š”๋ฐ, ๊ณต๋ถ€ํ•  ์‹œ๊ฐ„์กฐ์ฐจ ์—†๋‹ค๊ณ  ๋Š๊ปด์กŒ๊ธฐ์— ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ์ฑ„ ํ”„๋กœ์ ํŠธ์— ๋ฐ˜์˜ํ•ด๋ฒ„๋ ธ๋‹ค.

 

์ด๋ฒˆ์—๋Š” ๋‹ค์‹œ ๋” ํƒ„ํƒ„ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š”๋งŒํผ, ์ œ๋Œ€๋กœ ๊ณต๋ถ€ํ•˜๊ณ , screenTime API ๋งˆ์Šคํ„ฐ๊ฐ€ ๋ผ์•ผ ๊ฒ ๋‹ค.

 

์˜ค๋Š˜์€ screenTime API๋ฅผ ํ”„๋กœ์ ํŠธ์— ๋ฐ˜์˜ํ•˜๊ธฐ์— ์•ž์„œ, ํ•ด๋‹น API์—๋Š” ๋ฌด์—‡์ด ์žˆ๋Š”์ง€, ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€, ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋“ฑ์„ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค.

 

https://developer.apple.com/videos/play/wwdc2021/10123/

 

Meet the Screen Time API - WWDC21 - Videos - Apple Developer

Explore the Screen Time API and learn how you can build apps that support customized parental controls — all while putting privacy first...

developer.apple.com

 

์œ„ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€๋‹ค.

 


 

ScreenTime API๋ž€?

์ž๊พธ ๊ณต์‹๋ฌธ์„œ์—์„œ ๊ฐ•์กฐํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค. 

๋ฐ”๋กœ ๋งž์ถคํ˜• ๋ถ€๋ชจ ํ†ต์ œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ, ํ•ด๋‹น ๋‚ด์šฉ์„ ๊ฐ•์กฐํ•˜๊ณ  ์žˆ๋‹ค.

์ด API๋Š” ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

 

1. DeviceActivity

2. FamilyControls

3. ManagedSettings

 

์ฐจ๊ทผ์ฐจ๊ทผ ํ•˜๋‚˜์”ฉ ๊ณต๋ถ€ํ•ด๋ณด์ž !

 

 

1. DeviceActivity๋ž€?

https://developer.apple.com/documentation/DeviceActivity

 

DeviceActivity | Apple Developer Documentation

Monitor device activity with your app extension while maintaining user privacy.

developer.apple.com

 

์ด Framework๋Š” ๋ง ๊ทธ๋Œ€๋กœ, ๊ธฐ๊ธฐ ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

1. ์‚ฌ์šฉ์ž์˜ ์•ฑ ๋ฐ ์›น์‚ฌ์ดํŠธ ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ ,

2. ํ”„๋ผ์ด๋ฒ„์‹œ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

 

๊ตฌ์ฒด์ ์ธ ์ƒํ™ฉ์„ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๋ฉด,

์‚ฌ์šฉ์ž๊ฐ€ ์ž ์ž๋ฆฌ์— ๋“ค์–ด์•ผํ•˜๋Š” ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๊ธฐ ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋„๋ก ์ทจ์นจ ์‹œ๊ฐ„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ๋” ํ™•์žฅํ•ด๋ณด๋ฉด, ํ™œ๋™ ์ผ์ •์ด ์‹œ์ž‘๋˜๊ฑฐ๋‚˜ ๋๋‚˜๊ธฐ ์ „์—, ํ˜น์€ ํ™œ๋™์ด ๋ฏธ๋ฆฌ ์ •์˜๋œ ํ•œ๊ณ„์— ๋„๋‹ฌํ•  ๋•Œ ๊ฒฝ๊ณ  ํ˜น์€ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Š” ๊ณ„์† ์‚ฌ์šฉ ์‹œ๊ฐ„๊ณผ ํ™œ๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํ•œ๊ณ„์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ๋ฅผ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ธ, ํŠน์ • ์•ฑ์„ ํŠน์ • ์‹œ๊ฐ„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฅผ ์ธ์ง€ํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น framework์˜ ๊ธฐ๋Šฅ์ด ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ ํ•„์š”ํ•˜๋‹ค !

 

 

2. FamilyControls๋ž€?

์ด framework๋Š” ๋ง ๊ทธ๋Œ€๋กœ, ์ฒ˜์Œ์— ๊ณ„์† ๊ฐ•์กฐํ–ˆ๋˜ ๋ถ€๋ชจ์˜ ํ†ต์ œ ๊ถŒํ•œ์„ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.

์ด ๋ถ€๋ถ„์€ ๋‚ด๊ฐ€ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ, ์ž๊พธ ๊ฐ•์กฐํ•˜๋‹ˆ ์งง๊ฒŒ๋‚˜๋งˆ ์ •๋ฆฌ๋ฅผ ํ•ด๋ด์•ผ๊ฒ ๋‹ค.

๊ทผ๋ฐ ์ง€๋‚œ ๊ฐœ๋ฐœ์—์„œ๋Š” ์ด framework๋„ ์‚ฌ์šฉํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ, screenTime์„ ์„ค์ •ํ•˜๋ ค๋ฉด 1์ฐจ์ ์œผ๋กœ ํ•„์š”ํ•œ framework์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.

์ถ”ํ›„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋‹ค๋ณด๋ฉด ์•Œ๊ฒŒ ๋˜๊ฒ ์ง€?

 

Family Sharing group

์ด framework๋Š” ๋ถ€๋ชจ๊ฐ€ ์ž๋…€์˜ ์•ฑ ์‚ฌ์šฉ์„ ํ†ต์ œํ•˜๊ธฐ ์œ„ํ•จ์ด ๋ชฉ์ ์ด๋‹ค.

์ด๋ฅผ ์œ„ํ•ด์„œ๋Š”, ๋ถ€๋ชจ์˜ ํ†ต์ œ ๊ถŒํ•œ ํ•  ์ˆ˜ ์žˆ๋Š” ์Šน์ธ์ด ํ•„์š”ํ•œ๋ฐ ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์ž๋…€๊ณผ ๊ฐ™์€ ๊ฐ€์กฑ ๊ณต์œ  ๊ทธ๋ฃน์— ์†ํ•ด์žˆ์–ด์•ผ ํ•œ๋‹ค.

์ฆ‰, ์ž๋…€์™€ ๋ถ€๋ชจ๊ฐ€ ๊ฐ™์€ ๊ฐ€์กฑ ๊ณต์œ  ๊ทธ๋ฃน(Family Sharing group)์— ์†ํ•ด ์žˆ์–ด์•ผ ๋ถ€๋ชจ๊ฐ€ ์ž๋…€์˜ ์•ฑ ์‚ฌ์šฉ์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋Ÿฌํ•œ ์Šน์ธ ๊ณผ์ •์€, ์‹œ์Šคํ…œ์—์„œ ์ž๋…€์˜ ๊ธฐ๊ธฐ์— ์ธ์ฆ sheet๋ฅผ ํ‘œ์‹œํ•˜๊ณ , ๋ถ€๋ชจ๋‚˜ ๋ณดํ˜ธ์ž๊ฐ€ ์ด์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ์Šน์ธ ๋˜๋Š” ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์•ฑ์˜ AuthorizationCenter๋กœ ์ „๋‹ฌํ•œ๋‹ค.

 

AuthorizationCenter

์ด framework์—์„œ AuthorizationCenter๋Š” ๊ฝค๋‚˜ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.

๋ถ€๋ชจ๊ฐ€ ๊ถŒํ•œ์„ ์Šน์ธ ๋˜๋Š” ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ๊ณ , ์‚ฌ์šฉ์ž(์ฆ‰, ์ž๋…€)์˜ ์Šน์ธ ๋˜ํ•œ ํ•„์š”ํ•œ๋ฐ ์ด ๊ถŒํ•œ ๊ฒฐ๊ณผ ๋˜ํ•œ AuthorizationCenter๋กœ ์ „์†กํ•œ๋‹ค.

 

์ฆ‰, ์ •๋ฆฌํ•˜๋ฉด ์‰ฝ๊ฒŒ ์‚ฌ์šฉ์ž๋ฅผ ๋ถ€๋ชจ์™€ ์ž๋…€๋กœ ๋‚˜๋ˆ ๋ณด์ž.

์ด ๋•Œ, ๊ฐ™์€ ๊ฐ€์กฑ ๊ณต์œ  ๊ทธ๋ฃน์— ์†ํ•œ ๋ถ€๋ชจ์™€ ์ž๋…€๋Š” ๊ฐ๊ฐ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์Šน์ธ์ด ํ•„์š”ํ•˜๋‹ค.

๋ถ€๋ชจ๊ณผ ์ž๋…€๊ฐ€ ๊ถŒํ•œ์„ ์Šน์ธ ๋˜๋Š” ๊ฑฐ๋ถ€ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์‘๋‹ต ๊ฒฐ๊ณผ๊ฐ€ AuthorizationCenter๋กœ ๋ชจ๋‘ ์ „์†ก๋˜์–ด ์ฒ˜๋ฆฌ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

 

์ฃผ์š” ๊ธฐ๋Šฅ

์ด framework์˜ ์ฃผ์š” ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ๋ถ€๋ชจ๋‚˜ ๋ณดํ˜ธ์ž๋กœ๋ถ€ํ„ฐ ์ธ์ฆ๋œ ์ž๋…€(์‚ฌ์šฉ์ž)๊ฐ€ ๋ถ€๋ชจ ํ†ต์ œ ์„ค์ •์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰๋™์„ ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ฐฉ์ง€ํ•œ๋‹ค.

2. ๊ธฐ๊ธฐ์— ๋ถ€๋ชจ๋‚˜ ๋ณดํ˜ธ์ž๊ฐ€ ์ธ์ฆํ•œ ํ†ต์ œ ์•ฑ์ด ํ•˜๋‚˜ ์ด์ƒ ์žˆ์„ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž๋Š” iCloud์—์„œ ๋กœ๊ทธ์•„์›ƒ ํ•  ์ˆ˜ ์—†๋‹ค.

 

์ฆ‰, ์ž๋…€๋Š” ๋ถ€๋ชจ ํ†ต์ œ ์•„๋ž˜ ์žˆ๋Š” ์•ฑ์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ํ†ต์ œ๋ฅผ ๋ฒ—์–ด๋‚  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ž๋…€๋“ค์€ ์ •๋ง ์‹ซ์–ดํ• ๋งŒํ•œ framework์ด์ง€๋งŒ, ๋ถ€๋ชจ๋‹˜๋“ค์€ ์ƒ๋‹นํžˆ ์ข‹์•„ํ•˜์‹ค.. ๊ทธ๋Ÿฐ framework์ด๋‹ค.

 

 

3. Manage Settings

Managed Settings๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๊ธฐ๊ธฐ์—์„œ ํŠน์ • ์„ค์ • ๋ฐ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ผ์ด๋ฒ„์‹œ ๋ณดํ˜ธ ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค.

์‚ฌ์šฉ์ž์˜ ํ—ˆ๊ฐ€๋ฅผ ๋ฐ›์œผ๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ๋ฏธ๋””์–ด ์ฝ˜ํ…์ธ  ํ‘œ์‹œ ์ œํ•œ

2. ์•ฑ ๊ตฌ๋งค ์ œํ•œ

3. ์•”ํ˜ธ ์„ค์ •์„ ์ž ๊ทธ๊ณ , ๋‹ค๋ฅธ ๊ธฐ๊ธฐ ๋™์ž‘์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋˜ํ•œ, ManagedSettingsUI, DeviceActivity, ๊ทธ๋ฆฌ๊ณ  FamilyControls ์ด ์„ธ ๊ฐœ์™€ ํ•จ๊ป˜ ์ž‘๋™๋˜์–ด ๊ธฐ๊ธฐ ์‚ฌ์šฉ์„ ์ œํ•œ, ์Šน์ธ, ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.
 
์ด ๊ถŒํ•œ ์Šน์ธ ๋ฐฉ๋ฒ•์€ FamilyControls,
๊ธฐ๊ธฐ ์‚ฌ์šฉ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ผ์ • ๊ด€๋ฆฌ๋Š”DeviceActivity๋ฅผ ์ž์„ธํžˆ ๋ด์•ผํ•œ๋‹ค !

 


 

์ด์ „์—๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋ฐ˜ ์—†์ด ๋Œ€์ถฉ ๋ณด๊ณ  ๊ฐœ๋ฐœํ•ด์„œ ์ด๋ฆ„๋„ ํ—ท๊ฐˆ๋ฆฌ๊ณ , ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ๊ณผ ์—ฐ๊ด€ ๊ด€๊ณ„๋„ ๋„ˆ๋ฌด ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ์ •๋ฆฌํ•˜๋‹ˆ ์กฐ๊ธˆ์€ ์ดํ•ด๊ฐ€ ๋๋‹ค.

 

์ด์ œ ์ง์ ‘ framework๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ฉด์„œ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค !!

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•

 

 

์ฒ˜์Œ ๋ฐฐํฌ๋ฅผ ์ค€๋น„ํ•ด๋ณด๋Š” ๋‚˜๋Š”,,,

๋””๋ฒ„๊น… ๋ชจ๋“œ์™€ ๋ฆด๋ฆฌ์ฆˆ ๋ชจ๋“œ๊ฐ€ ๋”ฐ๋กœ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ชฐ๋ž๋‹ค.

 

์ˆœํƒ„ํ•˜๊ฒŒ test flight๊นŒ์ง€ ๋“ฑ๋กํ•˜๊ณ , ์„ค๋ ˆ๋Š” ๋งˆ์Œ์œผ๋กœ ์•ฑ์„ ์„ค์น˜ํ•ด ์‹คํ–‰ํ•ด๋ดค๋Š”๋ฐ

์›ฌ๊ฑธ,,,

 

๊ฐ€์žฅ ์ค‘์š”ํ•œ ํƒญ๋ฐ”๊ฐ€ ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.

 

์•„ใ…... ์–ด์ฉŒ์ง€..

 

๋ฐฐํฌ ๊ฒฝํ—˜์ด ์žˆ๋Š” ์นœ๊ตฌ์—๊ฒŒ ๋ฌผ์–ด๋ดค๋‹ค.

๐Ÿคฏ : ํ…Œํ”Œ์— ๋“ฑ๋กํ–ˆ๋Š”๋ฐ ๊ฐœ๋ฐœํ• ๋•Œ๋ž‘ ๋‹ค๋ฅด๋ฉด ์–ด๋–กํ•ด?

๐Ÿ˜ : ๋ญ˜ ์–ด๋–กํ•ด ๋‹ค์‹œ ์ˆ˜์ •ํ•ด์•ผ์ง€

๐Ÿ™ : (์•„์˜ค) ์–ด๋–ป๊ฒŒ ๊ทธ๊ฑธ ์žฌํ˜„ํ•˜๋Š”๋ฐ,,

๐Ÿค” : release ๋ชจ๋“œ๋กœ ๋นŒ๋“œํ•˜๋Š”๊ฑฐ ์žˆ์„๊ฑธ? flutter์—์„œ๋Š” flutter run —releaseํ•˜๋ฉด ๋˜๋˜๋ฐ ๋„ˆ๋„ค๋„ ์žˆ์„๊ฑธ?

 

์ด๋ ‡๊ฒŒ ํ• ๊ฒŒ ๋œ release ๋ชจ๋“œ ๋นŒ๋“œ..

 

์–ด๋–ป๊ฒŒ ํ•˜๋ƒ๋ฉด, xcode์˜ ์ƒ๋‹จ์— ์žˆ๋Š” Product ์—์„œ Scheme > Edit Scheme์„ ํ•˜๊ณ , 

 

 

 

Build Configuration์„ Debug -> Release๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค !

 

๋‚ด ๊ฒฝ์šฐ, ์ด๋ ‡๊ฒŒ ํ•ด๋„ ์—ฌ์ „ํžˆ ํƒญ๋ฐ”๊ฐ€ ์•ˆ๋ณด์˜€์ง€๋งŒ,,

์ด๊ฑด ๋ฌด์Šจ ๋ฌธ์ œ์ธ์ง€ ๋” ์ฐพ์•„๋ด์•ผ ํ•  ๋“ฏ ํ•˜๋‹ค.

 

์–ด์จŒ๋“  ๋ฐฐํฌ๋œ ๋ฒ„์ „์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์ด๋ ‡๊ฒŒ Build Configuration์„ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค !

728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•
์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ์— ์ž‘์—… ํ•  ๋•Œ, ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ํ˜‘์—…ํ•˜๊ธฐ ์œ„ํ•ด git branch ์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์ •ํ•˜๊ณ  ์ €์žฅ์†Œ๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ workflow ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋ฐ”๋กœ git branch ์ „๋žต์ด๋ผ๊ณ  ํ•œ๋‹ค.

๊ฐœ๋ฐœ์„ ํ•  ๋•Œ, ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ด๋‚˜ ์ˆ˜์ •์‚ฌํ•ญ์ด ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ , ๋…๋ฆฝ์ ์œผ๋กœ ๋™์‹œ์— ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๋˜ํ•œ, ๊ฐ ๋ธŒ๋žœ์น˜๊ฐ€ ํŠน์ • ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ์ž‘์—… ๋‹จ์œ„์˜ Rollback์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์— ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์˜ ์œ ์—ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ „๋žต์€ ์›ํ•˜๋Š” ๋ฒ„์ „ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ๊ด€๋ฆฌ์™€ ๋ฐฐํฌ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.
Branch ์ „๋žต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
1๏ธโƒฃ Git flow
2๏ธโƒฃ Github Flow
3๏ธโƒฃ Gitlab flow

 

 

1๏ธโƒฃ Git flow

๋ธŒ๋žœ์น˜ ์ข…๋ฅ˜

  1. master: ์ œํ’ˆ ์ถœ์‹œ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์ธ ๋ธŒ๋žœ์น˜
  2. develop: ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ์œ„ํ•ด ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜
  3. feature: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜
  4. release: ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ์ค€๋น„ํ•˜๋Š” ๋ธŒ๋žœ์น˜
  5. hotfix: ์ถœ์‹œ๋œ ์ œํ’ˆ์˜ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น˜๊ธฐ ์œ„ํ•œ ๋ธŒ๋žœ์น˜

 

Git Flow๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ ์ง„ํ–‰ ํ๋ฆ„

  1. ์‹ ๊ทœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์€ develop ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ feature ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ์„œ ์ž‘์—…
  2. ์ž‘์—…์ด ์™„๋ฃŒ๋œ feature ๋ธŒ๋žœ์น˜๋Š” develop ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉ.
    • PR์„ ํ†ตํ•ด ๋ฆฌ๋ทฐ ํ›„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐฉ์‹
  3. ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ค€๋น„๋Š” ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ์œ„ํ•ด ๊ฐœ๋ฐœ์ค‘์ธ develop ๋ธŒ๋žœ์น˜์—์„œ release ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ์„œ ํ•œ๋‹ค.
    • ๋งŒ์•ฝ, ํ•ด๋‹น ๊ณผ์ •์—์„œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ๊ฒฌ๋œ๋‹ค๋ฉด, release ๋ธŒ๋žœ์น˜์—์„œ ๋ฐ”๋กœ ๋ฐ˜์˜
  4. ํ…Œ์ŠคํŠธ ํ›„, ์ผ์ • ์ฃผ๊ธฐ๋กœ master ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•˜์—ฌ ์ œํ’ˆ ์ถœ์‹œ
  5. ๋ฐฐํฌ ์ดํ›„, release ๋ธŒ๋žœ์น˜์—์„œ ๋ฐœ๊ฒฌ๋˜์ง€ ๋ชปํ•œ ์ƒˆ๋กœ์šด ๋ฒ„๊ทธ๋Š” main ๋ธŒ๋žœ์น˜์—์„œ hotfix ๋ธŒ๋žœ์น˜๋ฅผ ํŒ ํ›„, hotfix ๋ธŒ๋žœ์น˜์—์„œ ๋ฐ”๋กœ ๊ณ ์นœ ํ›„ main์œผ๋กœ ๋ณ‘ํ•ฉ
  6. hotfix ๋ธŒ๋žœ์น˜์—์„œ ๊ณ ์น˜๊ณ , main ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ ๋˜์—ˆ๋‹ค๋ฉด, ์ด๋ฅผ develop ๋ธŒ๋žœ์น˜์—๋„ ๋ณ‘ํ•ฉ

 

ํŠน์ง•

  • release์™€ hotfix ๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ด ๋ช…ํ™•ํ•œ ๋ฐฐํฌ ์ ˆ์ฐจ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ๋‚˜ ๋Œ€๊ทœ๋ชจ ํŒ€์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•˜๋‹ค.
  • ๋ณต์žก์„ฑ๊ณผ Control์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ์ˆ˜์ •์„ ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ๋“ฑ์—์„œ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง.

 

 

 

2๏ธโƒฃ Github Flow

 

๋ธŒ๋žœ์น˜ ์ข…๋ฅ˜

  • master : base๊ฐ€ ๋˜๋Š” ๋ธŒ๋žœ์น˜
  • feature : master์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜

 

Github Flow๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ ์ง„ํ–‰ ํ๋ฆ„

  1. master ๋ธŒ๋žœ์น˜๋Š” ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ธŒ๋žœ์น˜.
  2. ๋งŒ์•ฝ, ์‹ ๊ทœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, master ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ feature ๋ธŒ๋žœ์น˜๋กœ ์ƒˆ๋กœ ๋”ฐ์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.
  3. Task๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, Pull Request๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Review๋ฅผ ์š”์ฒญํ•˜๊ณ , PR์€ feature → master ๋ธŒ๋žœ์น˜์ด๋‹ค.
  4. ๋ฆฌ๋ทฐ ์™„๋ฃŒ ํ›„, ํ”ผ๋“œ๋ฐฑ์ด ๋ชจ๋‘ ๋ฐ˜์˜๋˜์—ˆ๋‹ค๋ฉด, ํ•ด๋‹น feature ๋ธŒ๋žœ์น˜๋ฅผ master ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•œ๋‹ค.

 

ํŠน์ง•

  • ๋‹จ์ˆœํ•˜๋ฉฐ ์ง€์†์ ์ธ ๋ฐฐํฌ๋ฅผ ๊ฐ•์กฐํ•˜๋ฉฐ, master ๋ธŒ๋žœ์น˜์—์„œ ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๋‹จ์ˆœํ•˜๋ฉฐ ๋น ๋ฅธ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
  • ํ…Œ์ŠคํŠธ์™€ ๊ฒ€์ฆ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ master ๋ธŒ๋žœ์น˜๋กœ Merge ๋˜๋ฏ€๋กœ ์œ„ํ—˜์„ฑ์ด ์žˆ๋‹ค.

 

 

 

3๏ธโƒฃ Gitlab flow

๋ณต์žกํ•œ Git Flow์™€ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•œ Github Flow์˜ ์ ˆ์ถฉ์•ˆ

 

 

๋ธŒ๋žœ์น˜ ์ข…๋ฅ˜

  • master : ์•ˆ์ •์ ์ธ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ธŒ๋žœ์น˜๋กœ base๊ฐ€ ๋˜๋Š” ๋ธŒ๋žœ์น˜.
    • ์ „์ฒด์ ์ธ ํ…Œ์ŠคํŠธ ์ง„ํ–‰์ด ์™„๋ฃŒ๋˜์–ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ณด์žฅ์ด ์žˆ๋‹ค๋ฉด, production ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€.
    • ๋งŒ์•ฝ staging ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, pre-production ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€.
  • feature : ๊ฐ ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ๋˜๋Š” ๋ธŒ๋žœ์น˜.
    • master ๋ธŒ๋žœ์น˜์—์„œ ํŒŒ์ƒ๋˜๊ณ  PR์„ ํ†ตํ•ด ๋‹ค์‹œ ๋ณ‘ํ•ฉ๋œ๋‹ค.
  • Production : ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚œ ๊ธฐ๋Šฅ์˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๋ธŒ๋žœ์น˜
  • Pre-Production : ๋ฐฐํฌ ์ „์— ์ œํ’ˆ์„ ํ…Œ์ŠคํŠธ (QA, ํ’ˆ์งˆ๊ฒ€์‚ฌ) ํ•˜๋Š” ๋ธŒ๋žœ์น˜
    • ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด, production ๊ณผ master ์— ๊ฐ๊ฐ PR(Pull Request)์„ ๋ณด๋‚ธ๋‹ค.

 

Gitlab Flow๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ ์ง„ํ–‰ ํ๋ฆ„

  • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, master ๋ธŒ๋žœ์น˜์—์„œ feature ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • feature ๋ธŒ๋žœ์น˜์—์„œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„, PR์„ ํ†ตํ•ด
    • ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฒ€์ฆ ๋ฐ ๋ณด์žฅ์ด ์žˆ๋‹ค๋ฉด production ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€ํ•œ๋‹ค.
    • ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฒ€์ฆ ๋ฐ ๋ณด์žฅ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, pre-production ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€ํ•œ๋‹ค.
  • pre-production ๋ธŒ๋žœ์น˜์—์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ ๋˜์—ˆ๋‹ค๋ฉด, production๊ณผ master์— PR์„ ํ†ตํ•ด ๋ณ‘ํ•ฉํ•œ๋‹ค.

 

ํŠน์ง•

  • ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ ํ”Œ๋กœ์šฐ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ ๋‹ค.
  • GitLab์€ ๋‚ด์žฅ๋œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๋“ฑ์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ์•ˆ์ •์ ์ธ ๋ฐฐํฌ์™€ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ˜‘์—…๊ณผ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.
  • ํŠนํžˆ ์ง€์†์ ์ธ ๋ฐฐํฌ๊ฐ€ ๊ฐ•์กฐ๋˜๋Š” ํ™˜๊ฒฝ์—์„œ ํšจ๊ณผ์ ์ด๋‹ค.
728x90
๋ฐ˜์‘ํ˜•

'๐Ÿˆโ€โฌ› git' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

git history ์‚ญ์ œํ•˜๊ธฐ  (0) 2022.10.04
git merge ์—๋Ÿฌ  (0) 2022.07.06
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ–ฅ๏ธ  CPU Scheduling

์‹œ์Šคํ…œ์˜ CPU ์‚ฌ์šฉ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

Resources (CPUํฌํ•จ)๋Š” process๋“ค ์‚ฌ์ด์—์„œ ๊ณต์œ ๋œ๋‹ค.

 

๐Ÿ–ฅ๏ธ CPU-IO Burst Cycle

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ CPU ์‚ฌ์šฉ(bursts)๊ณผ ์ž…์ถœ๋ ฅ(I/O) ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์‚ฌ์ด๋ฅผ ๋ฒˆ๊ฐˆ์•„ ๊ฐ€๋ฉฐ ๋ฐ˜๋ณตํ•˜๋Š” ํ˜„์ƒ

 

Types of processes

  • I/O bound process
    • ์ž…๋ ฅ(input)๊ณผ ์ถœ๋ ฅ(output) ์ž‘์—…์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค
  • CPU-bound process
    • ๊ณ„์‚ฐ์ด๋‚˜ ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค

 

๐Ÿ–ฅ๏ธ CPU Scheduler

CPU Scheduler๋Š” ready queue์—์„œ process๋ฅผ ์„ ํƒํ•˜๊ณ , CPU core๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

 

When Scheduling Occurs?

  1. running์—์„œ waiting state์œผ๋กœ switch ๋  ๋•Œ (Nonpreemtive)
  2. running์—์„œ ready state์œผ๋กœ switch ๋  ๋•Œ (Preemtive)
  3. wating์—์„œ ready๋กœ switch ๋  ๋•Œ (Preemtive)
  4. ์ข…๋ฃŒ๋  ๋•Œ (Nonpreemtive)

 

Non-preemptive vs Preemptive

- Non-preemptive scheduling

  • ์•„๋ฌด๋„ interruptํ•  ์ˆ˜ ์—†๋‹ค.
  • running → waiting / terminate ๋  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•œ๋‹ค.
  • Running process๋Š” interrupted ๊ฐ€ ์•„๋‹ˆ๋‹ค.

- Preemptive scheduling

  • 1,2,3,4์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • processing์ด ์‹คํ–‰ ์ค‘์ผ ๋•Œ scheduling์ด ๋ฐœ์ƒํ•œ๋‹ค.
    • interrupt, process with higher priority
  • HW์˜ ์ง€์›๊ณผ shared data handling์ด ํ•„์š”ํ•˜๋‹ค.
  • ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์ด ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๋•Œ ๊ฒฝ์Ÿ ์ƒํƒœ(๋ ˆ์ด์Šค ์ปจ๋””์…˜)๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ–ฅ๏ธ Dispatcher

CPU๋ฅผ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์—์„œ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ํ”„๋กœ์„ธ์Šค๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ์šด์˜ ์ฒด์ œ์˜ ๋ชจ๋“ˆ์ด๋‹ค.
  • Switching Context
    • CPU๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค(P0)์˜ ์ƒํƒœ(์˜ˆ: ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’, ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ ๋“ฑ)๋ฅผ ์ €์žฅํ•˜๊ณ , ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค(P1)์˜ ์ด์ „ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์œ ์ € ๋ชจ๋“œ๋กœ ์ „ํ™˜(Switching to User Mode)
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก CPU์˜ ๋ชจ๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • ์ ์ ˆํ•œ ์œ„์น˜๋กœ ์ ํ”„(Jumping to the Proper Location)
    • ํ”„๋กœ๊ทธ๋žจ์ด ์ค‘๋‹จ๋œ ๋ถ€๋ถ„๋ถ€ํ„ฐ ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๋ฅผ ํ•ด๋‹น ์œ„์น˜๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Dispatch Latency (์ง€์—ฐ)

ํ•œ ํ”„๋กœ์„ธ์Šค(P0)๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค(P1)๊ฐ€ ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์˜๋ฏธํ•œ๋‹ค.

 

๐Ÿ–ฅ๏ธ Scheduling Criteria

  • CPU Utilization(CPU ์ด์šฉ๋ฅ ) : CPU๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ถ€์ง€๋Ÿฐํžˆ ์ผํ•˜๋Š”๊ฐ€. / ๋†’์„์ˆ˜๋ก ์ข‹์€๊ฑฐ์ž„ (๋‹จ์œ„ : %)
  • Throughput(์ฒ˜๋ฆฌ์œจ) : ์‹œ๊ฐ„๋‹น ๋ช‡๊ฐœ์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฐ€. / ๋†’์„์ˆ˜๋ก ์ข‹์€๊ฑฐ์ž„ (๋‹จ์œ„ : job/sec)
  • Turnaround time(๋ฐ˜ํ™˜์‹œ๊ฐ„) : ์ž‘์—…์ด ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋๋‚ด๊ณ  ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„. / ์งง์„์ˆ˜๋ก ์ข‹์€๊ฑฐ์ž„ (๋‹จ์œ„ : sec)
  • Waiting time(๋Œ€๊ธฐ์‹œ๊ฐ„) : CPU์—์„œ ์„œ๋น„์Šค๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ReadyQueue์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„. / ์งง์„์ˆ˜๋ก ์ข‹์ง€ (๋‹จ์œ„ : sec)
  • Response time(์‘๋‹ต์‹œ๊ฐ„) : ์ปดํ“จํ„ฐ์™€ ๋Œ€ํ™”ํ•˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์ค‘์š”ํ•จ. (์š”์ƒˆ๋Š” ๋‹ค ๋งž๊ธดํ•จ) / ์งง์„์ˆ˜๋ก ์ข‹์Œ (๋‹จ์œ„ : sec)
728x90
๋ฐ˜์‘ํ˜•
728x90
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•
728x90

์ด์ œ ๊ณง ํŒŒ๋“œ์˜ 3๊ธฐ iOSํŒŒํŠธ๊ฐ€ ์‹œ์‹œ์‹œ์‹œ์ž‘์ด๋‹ค.

์„ธ๋ฏธ๋‚˜๋ฅผ ์œ„ํ•ด OT ์ž๋ฃŒ๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋˜ ์ค‘, ๋ฌธ๋“ ๋ˆ„๊ตฐ๊ฐ€ ์ด๋Ÿฐ ์งˆ๋ฌธ์„ ํ•˜๋ฉด ์–ด์ฉŒ์ง€ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

 

Main์ด๋ž‘ Lauch ์ค‘ ์–ด๋””์—์„œ ํ•ด์•ผ๋ผ์š”?

๋‘˜์˜ ์ฐจ์ด๋Š” ๋ญ์ฃ ?

 

.

.

 

์ •ํ™•ํ•˜๊ฒŒ ์•Œ๋ ค์ค˜์•ผ ํ•˜๊ธฐ์— ์ฐพ์•„๋ณด์•˜๋‹ค.

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด LauchStoryboard๋Š” Android์˜ splashํ™”๋ฉด ๊ฐ™์€ ํ™”๋ฉด์ด์—ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ, LauchStoryboard์— ์Šคํ”Œ๋ž˜์‹œ ํ™”๋ฉด์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ !

 

.

.

Launch storyboard

 

 

Main storyboard

 

์ด๋ ‡๊ฒŒ ๊ฐ๊ฐ์„ ์ง€์ •ํ•ด์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด, ์•„๋งˆ Launch storyboard๋งŒ ๋ณด์—ฌ์งˆ ๊ฒƒ์ด๋‹ค.

 

์ด๊ฑด AppDelegate์—์„œ Launch storyboard๊ฐ€ ๋ณด์—ฌ์งˆ ์‹œ๊ฐ„์„ ์ง€์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    sleep(1)
    return true
}

 

์ด๋Ÿฐ์‹์œผ๋กœ sleep(1)์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด, 1์ดˆ ๋’ค Main ํ™”๋ฉด์ด ๋ณด์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ํŒŒํŠธ์žฅ์„ ํ•˜๋‹ค ๋ณด๋‹ˆ, ๋ˆˆ์— ๋ณด์ด์ง€ ์•Š๋˜ ๊ฒƒ๋“ค์ด ํ•˜๋‚˜์”ฉ ๋ณด์—ฌ์ง€๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

.

.

 

์•„์ง ๋ถ€์กฑํ•จ์ด ๋งŽ์€ ๋‚ด๊ฐ€ ํŒŒํŠธ์žฅ์ด๋ผ๋‹ˆ,,

๋” ์—ด์‹ฌํžˆ ํ• ๊ฒŒ์š” ์—ฌ๋Ÿฌ๋ถ„..

 

.

.

 

๋

 

728x90
๋ฐ˜์‘ํ˜•

+ Recent posts