λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

ComputerScience πŸ“š43

[OS] CPU μŠ€μΌ€μ€„λ§(CPU Scheduling) CPU μŠ€μΌ€μ€„λ§(CPU Scheduling) CPU μŠ€μΌ€μ€„λ§μ€ 닀쀑 ν”„λ‘œκ·Έλž¨ 운영체제의 κΈ°λ³Έμž…λ‹ˆλ‹€. μš΄μ˜μ²΄μ œλŠ” CPUλ₯Ό ν”„λ‘œμ„ΈμŠ€ 간에 κ΅ν™˜ν•¨μœΌλ‘œμ¨, 컴퓨터λ₯Ό 보닀 μƒμ‚°μ μœΌλ‘œ λ§Œλ“­λ‹ˆλ‹€. μ΄λ²ˆμ—λŠ” 기본적인 μŠ€μΌ€μ€„λ§ κ°œλ…μ„ μ†Œκ°œν•˜κ³  μ •λ¦¬ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€. μ½”μ–΄κ°€ ν•˜λ‚˜μΈ μ‹œμŠ€ν…œμ—μ„œλŠ” ν•œμˆœκ°„μ— 였직 ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λ§Œμ΄ 싀행될 수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λ¨Έμ§€ ν”„λ‘œμ„ΈμŠ€λŠ” CPU의 μ½”μ–΄κ°€ κ°€μš© μƒνƒœκ°€ λ˜μ–΄ λ‹€μ‹œ μŠ€μΌ€μ€„ 될 수 μžˆμ„ λ•ŒκΉŒμ§€ κΈ°λ‹€λ €μ•Ό ν•©λ‹ˆλ‹€. 닀쀑 ν”„λ‘œκ·Έλž˜λ°μ˜ λͺ©μ μ€ CPU 이용λ₯ μ„ μ΅œλŒ€ν™”ν•˜κΈ° μœ„ν•΄ 항상 μ‹€ν–‰ 쀑인 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°€μ§€κ²Œ ν•˜λŠ” 데 μžˆμŠ΅λ‹ˆλ‹€. 닀쀑 ν”„λ‘œκ·Έλž˜λ°μ— λŒ€ν•œ κΈ°λ³Έ μ•„μ΄λ””μ–΄λŠ” 비ꡐ적 κ°„λ‹¨ν•©λ‹ˆλ‹€. ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ”, μ „ν˜•μ μΈ μ–΄λ–€ I/O μš”μ²­μ΄ μ™„λ£Œλ˜κΈ°λ₯Ό κΈ°λ‹€λ €μ•Όλ§Œ ν•  λ•ŒκΉŒμ§€ μ‹€ν–‰λ©λ‹ˆλ‹€. μ΄λ ‡κ²Œ 되면, λ‹¨μˆœν•œ.. 2022. 2. 20.
[OS] μŠ€λ ˆλ“œ ν’€(thread pool) μŠ€λ ˆλ“œ ν’€ [OS] μŠ€λ ˆλ“œμ™€ 병행성(Thread & Concurrency) μŠ€λ ˆλ“œμ™€ 병행성(Threads & Concurrency) μš°λ¦¬λŠ” 이전에 μ •λ¦¬ν–ˆλ‹€μ‹œν”Ό ν”„λ‘œμ„ΈμŠ€ λͺ¨λΈμ€ ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λ‚˜μ˜ μ œμ–΄ μŠ€λ ˆλ“œλ‘œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•œλ‹€κ³  κ°€μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 거의 λͺ¨λ“  ν˜„λŒ€ 운영체제 dkswnkk.tistory.com 이전인 μœ„ κΈ€μ—μ„œ 닀쀑 μŠ€λ ˆλ“œλ‘œ κ΅¬μ„±λœ μ›ΉλΈŒλΌμš°μ €λ₯Ό μ„€λͺ…ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬ν•œ μ›Ή μ„œλΉ„μŠ€λŠ” μš”μ²­μ„ 받을 λ•Œλ§ˆλ‹€ κ·Έ μš”μ²­μ„ μœ„ν•œ μƒˆλ‘œμš΄ μŠ€λ ˆλ“œλ₯Ό λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€. μƒˆλ‘œμš΄ μŠ€λ ˆλ“œλ₯Ό 맀 μš”μ²­λ§ˆλ‹€ λ§Œλ“€μ–΄ μ£ΌλŠ” 것은, κ·Έλ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ§Œλ“€μ–΄μ£ΌλŠ” κ²ƒλ³΄λ‹€λŠ” ν™•μ‹€νžˆ 더 μ§„λ³΄λœ λ°©λ²•μž„μ€ ν‹€λ¦Όμ—†μ§€λ§Œ, 닀쀑 μŠ€λ ˆλ“œ μ„œλ²„λŠ” 아직도 μ—¬λŸ¬ 문제λ₯Ό 가지고 μžˆμŠ΅λ‹ˆλ‹€. 첫 번째 λ¬Έμ œλŠ” μ„œλΉ„μŠ€ν•  λ•Œλ§ˆλ‹€ μŠ€λ ˆλ“œλ₯Ό μƒμ„±ν•˜λŠ” .. 2022. 2. 14.
[OS] μŠ€λ ˆλ“œμ™€ λ™μ‹œμ„±(Thread & Concurrency) μŠ€λ ˆλ“œμ™€ 병행성(Threads & Concurrency) μš°λ¦¬λŠ” 이전에 μ •λ¦¬ν–ˆλ‹€μ‹œν”Ό ν”„λ‘œμ„ΈμŠ€ λͺ¨λΈμ€ ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ ν•˜λ‚˜μ˜ μ œμ–΄ μŠ€λ ˆλ“œλ‘œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•œλ‹€κ³  κ°€μ •ν•˜μ˜€μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 거의 λͺ¨λ“  ν˜„λŒ€ μš΄μ˜μ²΄μ œλŠ” ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ 닀쀑 μŠ€λ ˆλ“œλ₯Ό ν¬ν•¨ν•˜λŠ” νŠΉμ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€. 닀쀑 CPUλ₯Ό μ œκ³΅ν•˜λŠ” μ΅œμ‹  닀쀑 μ½”μ–΄ μ‹œμŠ€ν…œμ—μ„œ μŠ€λ ˆλ“œ μ‚¬μš©μ„ ν†΅ν•œ 병렬 처리의 기회λ₯Ό μ‹λ³„ν•˜λŠ” 것이 점차 μ€‘μš”ν•΄μ§‘λ‹ˆλ‹€. 이번 μž₯μ—μ„œλŠ” Pthreads, Windows 및 Java μŠ€λ ˆλ“œ 라이브러리용 API에 λŒ€ν•œ λ…Όμ˜λ₯Ό λΉ„λ‘―ν•˜μ—¬ 닀쀑 μŠ€λ ˆλ“œ 컴퓨터 μ‹œμŠ€ν…œκ³Ό κ΄€λ ¨λœ λ§Žμ€ κ°œλ…μ„ μ†Œκ°œν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. λ˜ν•œ μŠ€λ ˆλ“œ 생성 κ°œλ…μ„ μΆ”μƒν™”ν•˜λŠ” λͺ‡ 가지 μƒˆλ‘œμš΄ κΈ°λŠ₯을 μ‚΄νŽ΄λ³Ό 건데 이 κΈ°λŠ₯은 κ°œλ°œμžκ°€ 병렬 처리 기회λ₯Ό μ‹λ³„ν•˜κ³  μ–Έμ–΄ 제곡 κΈ°λŠ₯ 및 API ν”„.. 2022. 2. 14.
[OS] IPC μ‹œμŠ€ν…œμ˜ 사둀(Examples of IPC Systems) IPC μ‹œμŠ€ν…œμ˜ 사둀(Examples of IPC Systems) [OS] ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신(Interprocess Communication, IPC) ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신(IPC) 운영체제 λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” 병행 ν”„λ‘œμ„ΈμŠ€λ“€μ€ λ…λ¦½μ μ΄κ±°λ‚˜ λ˜λŠ” ν˜‘λ ₯적인 ν”„λ‘œμ„ΈμŠ€ 듀일 수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμŠ€ν…œμ—μ„œ μ‹€ν–‰ 쀑인 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ“€κ³Ό 데이터λ₯Ό 곡 dkswnkk.tistory.com 이전에 IPC의 κ°œλ…μ— λŒ€ν•΄ μ‚΄νŽ΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€. μ΄λ²ˆμ—λŠ” λ„€ 가지 λ‹€λ₯Έ IPC μ‹œμŠ€ν…œμ˜ 사둀에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. POSIX 곡유 λ©”λͺ¨λ¦¬(POSIX Shared Memory) Mach λ©”μ‹œμ§€ 전달(Mach Message Passing) Windows νŒŒμ΄ν”„(Pipes) 1. POSIX 곡유 λ©”λͺ¨λ¦¬(POSIX Shared Memory) 곡.. 2022. 2. 10.
[OS] ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신(Interprocess Communication, IPC) ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신(IPC) 운영체제 λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” 병행 ν”„λ‘œμ„ΈμŠ€λ“€μ€ λ…λ¦½μ μ΄κ±°λ‚˜ λ˜λŠ” ν˜‘λ ₯적인 ν”„λ‘œμ„ΈμŠ€ 듀일 수 μžˆμŠ΅λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμŠ€ν…œμ—μ„œ μ‹€ν–‰ 쀑인 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ“€κ³Ό 데이터λ₯Ό κ³΅μœ ν•˜μ§€ μ•ŠλŠ” ν”„λ‘œμ„ΈμŠ€λŠ” λ…λ¦½μ μž…λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€κ°€ μ‹œμŠ€ν…œμ—μ„œ μ‹€ν–‰ 쀑인 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ“€μ— 영ν–₯을 μ£Όκ±°λ‚˜ λ°›λŠ”λ‹€λ©΄ μ΄λŠ” ν˜‘λ ₯적인 ν”„λ‘œμ„ΈμŠ€λ“€μž…λ‹ˆλ‹€. λΆ„λͺ…νžˆ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ“€κ³Ό 자료λ₯Ό κ³΅μœ ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λŠ” μƒν˜Έ ν˜‘λ ₯적인 ν”„λ‘œμ„ΈμŠ€μž…λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€ ν˜‘λ ₯을 ν—ˆμš©ν•˜λŠ” ν™˜κ²½μ„ μ œκ³΅ν•˜λŠ” λ°λŠ” λͺ‡ 가지 μ΄μœ κ°€ μžˆμŠ΅λ‹ˆλ‹€. 정보 곡유(information sharing): μ—¬λŸ¬ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ λ™μΌν•œ 정보(예λ₯Ό λ“€λ©΄, 볡사와 λΆ™μ—¬λ„£κΈ°)에 ν₯λ―Έλ₯Ό λŠλ‚„ 수 μžˆμœΌλ―€λ‘œ, κ·ΈλŸ¬ν•œ 정보λ₯Ό λ³‘ν–‰μ μœΌλ‘œ μ ‘κ·Όν•  수 μžˆλŠ” ν™˜κ²½μ„ μ œκ³΅ν•΄μ•Ό ν•œλ‹€. 계산 가속화(comp.. 2022. 2. 10.
[OS] ν”„λ‘œμ„ΈμŠ€μ˜ κ°œλ…(Process Concept) ν”„λ‘œμ„ΈμŠ€ κ°œλ…(Process Concept) μš°λ¦¬κ°€ 운영체제λ₯Ό λ…Όμ˜ν•  λ•Œ ν•œ 가지 μž₯μ• λŠ” λͺ¨λ“  CPU ν™œλ™λ“€μ„ μ–΄λ–»κ²Œ λΆ€λ₯Ό 것인가 ν•˜λŠ” 데에 의문이 μžˆμŠ΅λ‹ˆλ‹€. 초창기 μ»΄ν“¨ν„°λŠ” μž‘μ—…(job)을 μ‹€ν–‰ν•˜λŠ” μΌκ΄„μ²˜λ¦¬ μ‹œμŠ€ν…œμ΄μ—ˆκ³ , μ‚¬μš©μž ν”„λ‘œκ·Έλž¨ λ˜λŠ” νƒœμŠ€ν¬(task)λ₯Ό μ‹€ν–‰ν•˜λŠ” μ‹œλΆ„ν•  μ‹œμŠ€ν…œμ΄ λ’€λ₯Ό μ΄μ—ˆμŠ΅λ‹ˆλ‹€. 단일 μ‚¬μš©μž μ‹œμŠ€ν…œμ—μ„œλ„ μ‚¬μš©μžλŠ” μ›Œλ“œ ν”„λ‘œμ„Έμ„œ, μ›Ή λΈŒλΌμš°μ € 및 μ „μž 메일 νŒ¨ν‚€μ§€μ™€ 같은 μ—¬λŸ¬ ν”„λ‘œκ·Έλž¨μ„ ν•œ λ²ˆμ— μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ 닀쀑 νƒœμŠ€ν‚Ήμ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ” μž„λ² λ””λ“œ μž₯μΉ˜μ—μ„œμ™€ 같이 컴퓨터가 ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨λ§Œ μ‹€ν–‰ν•  수 μžˆλ”λΌλ„ μš΄μ˜μ²΄μ œλŠ” λ©”λͺ¨λ¦¬ 관리와 같은 자체 ν”„λ‘œκ·Έλž¨λœ λ‚΄λΆ€ ν™œλ™μ„ 지원해야 ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬ μΈ‘λ©΄μ—μ„œ μ΄λŸ¬ν•œ λͺ¨λ“  ν™œλ™μ€ μœ μ‚¬ν•˜λ―€λ‘œ μ΄λŸ¬ν•œ λͺ¨λ“  ν™œλ™μ„ .. 2022. 2. 8.
[OS] macOS, iOS 와 Android 운영체제 macOS와 iOS Apple의 macOSμš΄μ˜μ²΄μ œλŠ” 주둜 λ°μŠ€ν¬ν†± 및 λž©ν†± 컴퓨터 μ‹œμŠ€ν…œμ—μ„œ μ‹€ν–‰λ˜λ„λ‘ μ„€κ³„λ˜μ—ˆμœΌλ©° iOSλŠ” iPhone 슀마트폰 및 iPad νƒœλΈ”λ¦Ώ μ»΄ν“¨ν„°μš©μœΌλ‘œ μ„€κ³„λœ λͺ¨λ°”일 μš΄μ˜μ²΄μ œμž…λ‹ˆλ‹€. ꡬ쑰적으둜 macOS와 iOSλŠ” 곡톡점이 λ§ŽμœΌλ―€λ‘œ κ³΅μœ ν•˜λŠ” λ‚΄μš©κ³Ό μ„œλ‘œ λ‹€λ₯Έ 점을 κ°•μ‘°ν•˜μ—¬ ν•¨κ»˜ μ œμ‹œν•©λ‹ˆλ‹€. 이 두 μ‹œμŠ€ν…œμ˜ 일반적인 μ•„ν‚€ν…μ²˜λŠ” μ•„λž˜μ˜ 이미지와 κ°™μŠ΅λ‹ˆλ‹€. λ‹€μ–‘ν•œ 측의 μ£Όμš” νŠΉμ§•μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. μ‚¬μš©μž κ²½ν—˜ μΈ΅: 이 측은 μ‚¬μš©μžκ°€ μ»΄ν“¨νŒ… μž₯μΉ˜μ™€ μƒν˜Έ μž‘μš©ν•  수 μžˆλŠ” μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. macOSλŠ” 마우슀 λ˜λŠ” νŠΈλž™νŒ¨λ“œ 용으둜 μ„€κ³„λœ Aqua μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λŠ” 반면, iOSλŠ” ν„°μΉ˜ μž₯치용으둜 μ„€κ³„λœ Springboard μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 응.. 2022. 2. 6.
[OS] μ‹œμŠ€ν…œ 콜(System Calls) μ‹œμŠ€ν…œ 콜 μ‹œμŠ€ν…œ μ½œμ€ μš΄μ˜μ²΄μ œμ— μ˜ν•΄ μ‚¬μš© κ°€λŠ₯ν•˜κ²Œ 된 μ„œλΉ„μŠ€μ— λŒ€ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. νŠΉμ • μ €μˆ˜μ€€ μž‘μ—…(예λ₯Ό λ“€λ©΄ ν•˜λ“œμ›¨μ–΄λ₯Ό 직접 μ ‘κ·Όν•΄μ•Ό ν•˜λŠ” μž‘μ—…)은 μ–΄μ…ˆλΈ”λ¦¬ λͺ…령을 μ‚¬μš©ν•˜μ—¬ μž‘μ„±λ˜μ–΄μ•Ό ν•˜λ”λΌλ„ μ΄λŸ¬ν•œ ν˜ΈμΆœμ€ 일반적으둜 C와 C++ μ–Έμ–΄λ‘œ μž‘μ„±λœ ν•¨μˆ˜ ν˜•νƒœλ‘œ μ œκ³΅λ©λ‹ˆλ‹€. (1) 예제 μš΄μ˜μ²΄μ œκ°€ μ–΄λ–»κ²Œ μ‹œμŠ€ν…œ μ½œμ„ μ‚¬μš©ν•  수 있게 λ§Œλ“œλŠ”μ§€μ— λŒ€ν•΄ λ…Όμ˜ν•˜κΈ° 전에 μ‹œμŠ€ν…œ 콜이 μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠ”μ§€λ₯Ό μ„€λͺ…ν•˜λŠ” 예λ₯Ό ν•œλ²ˆ λ“€μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€. ν•œ νŒŒμΌλ‘œλΆ€ν„° 데이터λ₯Ό μ½μ–΄μ„œ λ‹€λ₯Έ 파일둜 λ³΅μ‚¬ν•˜λŠ” κ°„λ‹¨ν•œ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•œλ‹€κ³  κ°€μ •ν•΄ λ΄…μ‹œλ‹€. ν”„λ‘œκ·Έλž¨μ΄ ν•„μš”λ‘œ ν•˜λŠ” 첫 번째 μž…λ ₯은 두 개의 파일, 즉 μž…λ ₯ 파일과 좜λ ₯ 파일의 이름일 κ²ƒμž…λ‹ˆλ‹€. 이 이름듀은 운영체제 섀계에 따라 μ—¬λŸ¬ 가지 λ°©λ²•μœΌλ‘œ 지정할 수 μžˆμŠ΅λ‹ˆ.. 2022. 2. 5.
[OS] μ‚¬μš©μžμ™€ 운영체제 μΈν„°νŽ˜μ΄μŠ€(User and Operating-System Interface) μ‚¬μš©μžμ™€ 운영체제 μΈν„°νŽ˜μ΄μŠ€(User and Operating-System Interface) μ‚¬μš©μžκ°€ μš΄μ˜μ²΄μ œμ™€ μ ‘μ΄‰ν•˜λŠ” λ°©μ‹μ—λŠ” μ—¬λŸ¬ 방법이 μžˆμŠ΅λ‹ˆλ‹€. μ €λŠ” μ΄λ²ˆμ— μ—¬λŸ¬ 가지 방법 쀑 3가지 기본적인 방법에 λŒ€ν•΄ μ •λ¦¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. ν•œ 방식은 λͺ…λ Ήμ–΄ 라인 μΈν„°νŽ˜μ΄μŠ€ λ˜λŠ” λͺ…λ Ή 인터프리터(command interpreter)λ₯Ό μ œκ³΅ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 λͺ…λ Ήμ–΄ 라인 μΈν„°νŽ˜μ΄μŠ€λŠ” μ‚¬μš©μžκ°€ μš΄μ˜μ²΄μ œκ°€ μˆ˜ν–‰ν•  λͺ…λ Ήμ–΄λ₯Ό 직접 μž…λ ₯ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. λ‹€λ₯Έ 두 가지 방식은 μ‚¬μš©μžκ°€ κ·Έλž˜ν”½ 기반 μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν†΅ν•˜μ—¬ μš΄μ˜μ²΄μ œμ™€ μ ‘μ΄‰ν•˜κ²Œ ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λͺ…λ Ή 인터프리터 κ·Έλž˜ν”½ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ ν„°μΉ˜μŠ€ν¬λ¦° μΈν„°νŽ˜μ΄μŠ€ (1) λͺ…λ Ή 인터프리터(Command-Interpreter) Linux, Unix 및 Window.. 2022. 2. 3.