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

ComputerScience πŸ“š/운영체제23

[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.
[OS] λΆ„μ‚°μ‹œμŠ€ν…œ(Distributed Systems) μ„œλ‘  λΆ„μ‚° μ‹œμŠ€ν…œ(Distributed Systems) λΆ„μ‚° μ‹œμŠ€ν…œμ€ 물리적으둜 λ–¨μ–΄μ Έ μžˆλŠ” 이기쒅(ν•˜λ‚˜ μ΄μƒμ˜ ν”„λ‘œμ„Έμ„œ λ˜λŠ” μ½”μ–΄λ₯Ό μ‚¬μš©ν•˜λŠ” μ‹œμŠ€ν…œ) μ»΄ν“¨ν„°λ“€μ˜ μ§‘ν•©μž…λ‹ˆλ‹€. λΆ„μ‚° μ‹œμŠ€ν…œμ˜ 컴퓨터듀은 μ‚¬μš©μžκ°€ μ‹œμŠ€ν…œ λ‚΄μ˜ λ‹€μ–‘ν•œ μžμ›λ“€μ„ μ ‘κ·Όν•  수 μžˆλ„λ‘ λ„€νŠΈμ›Œν¬λ‘œ μ—°κ²°λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 곡유 μžμ›μ— λŒ€ν•œ 접근은 계산 속도와 κΈ°λŠ₯, 데이터 κ°€μš©μ„± 및 신뒰성을 ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€. λͺ‡λͺ‡ μš΄μ˜μ²΄μ œλŠ” λ„€νŠΈμ›Œν‚Ήμ˜ μžμ„Έν•œ 사항을 λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€μ˜ μž₯치 λ“œλΌμ΄λ²„μ— ν¬ν•¨μ‹œν‚΄μœΌλ‘œμ¨ λ„€νŠΈμ›Œν¬μ— λŒ€ν•œ 접근을 파일 μ ‘κ·Ό ν˜•νƒœλ‘œ μΌλ°˜ν™”μ‹œν‚΅λ‹ˆλ‹€. λ‹€λ₯Έ μš΄μ˜μ²΄μ œλ“€μ€ μ‚¬μš©μžκ°€ νŠΉμ • λ„€νŠΈμ›Œν¬ κΈ°λŠ₯을 λͺ…μ‹œμ μœΌλ‘œ ν˜ΈμΆœν•˜κ²Œ ν•©λ‹ˆλ‹€. 일반적으둜 μ‹œμŠ€ν…œμƒμ—λŠ” 두 λͺ¨λ“œκ°€ ν˜Όμž¬λ˜μ–΄ 있으며 κ·Έ 예둜 FTP(File Transfer Protocol)와 NFS(.. 2022. 2. 2.
[OS] 가상화(Virtualization) μ„œλ‘  가상화(Virtualization) κ°€μƒν™”λŠ” 단일 컴퓨터(CPU, λ©”λͺ¨λ¦¬, λ””μŠ€ν¬ λ“œλΌμ΄λΈŒ, λ„€νŠΈμ›Œν¬ μΈν„°νŽ˜μ΄μŠ€ μΉ΄λ“œ λ“±)의 ν•˜λ“œμ›¨μ–΄λ₯Ό μ—¬λŸ¬ 가지 μ‹€ν–‰ ν™˜κ²½μœΌλ‘œ μΆ”μƒν™”ν•˜μ—¬ κ°œλ³„ ν™˜κ²½μ΄ μžμ‹ λ§Œμ˜ μ»΄ν“¨ν„°μ—μ„œ μ‹€ν–‰λ˜κ³  μžˆλ‹€λŠ” ν™˜μƒμ„ λ§Œλ“€ 수 μžˆλŠ” κΈ°μˆ μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν™˜κ²½μ€ λ™μ‹œμ— μ‹€ν–‰λ˜κ³  μ„œλ‘œ μƒν˜Έ μž‘μš©ν•  수 μžˆλŠ” λ‹€λ₯Έ κ°œλ³„ 운영체제(예: Windows 및 UNIX)둜 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 가상 λ¨Έμ‹ μ˜ μ‚¬μš©μžλŠ” 단일 μš΄μ˜μ²΄μ œμ—μ„œ λ™μ‹œμ— μ‹€ν–‰λ˜λŠ” λ‹€μ–‘ν•œ ν”„λ‘œμ„ΈμŠ€ 간에 μ „ν™˜ν•  수 μžˆλŠ” 것과 λ™μΌν•œ λ°©μ‹μœΌλ‘œ λ‹€μ–‘ν•œ 운영체제 간에 μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ°€μƒν™”λŠ” μš΄μ˜μ²΄μ œκ°€ λ‹€λ₯Έ 운영체제 λ‚΄μ—μ„œ ν•˜λ‚˜μ˜ μ‘μš©μ²˜λŸΌ μˆ˜ν–‰λ  수 있게 ν•©λ‹ˆλ‹€. μ–Έλœ» λ³΄μ•„μ„œλŠ” κ·ΈλŸ¬ν•œ κΈ°λŠ₯이 별 μ΄μœ κ°€ μ—†λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ 가상화 산업은 λ°©λŒ€ν•˜λ©° μ„±μž₯.. 2022. 2. 2.