운영체제 19

18. 멀티 프로세스 & 스레드 & 멀티 스레딩

멀티 프로세싱: 여러 개의 "프로세스", 멀티 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것- 이를 통해 하나 이상의 일을 병렬로 처리할 수 있음- 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생되더라도 다른 프로세스를 이용해서 처리할 수 있음-> 신뢰성이 높음 cf)동시성: 하나의 코어에서 여러 개의 작업이 번갈아가며 실행 병렬성: 멀티 코어에서 여러 작업을 동시에 실행 동기: 1개의 요청을 완료한 후 다른 요청을 실행하는 순차적인 방식- 요청한 순서 대로 결과가 나옴 비동기: 다중 실행 환경에서 여러 개의 요청이 선행 작업의 순서나 완료 여부와 상관없이 실행되는 방식- 요청한 순서 대로 결과가 나오지 않음 IPC: 프로세스끼리 데이터를 주고 받고 공유 데이터를 관리하는 메커..

운영체제 2025.02.10

17. 교착 상태(DeadLock)

락(Lock): 동기화를 보장하는 툴- 락을 사용하여 동기화를 수행하다 보면 필연적으로 데드락(DeadLock)이라는 부작용이 생김- 데드락 상태가 되면 더 이상 프로세스나 스레드가 진행하지 못하기 때문에 이를 잘 파악하는 게 중요 cf) 비관적인 락 : 동시에 연산이 실행되지 않도록 락을 걸어서 다른 연산이 끼어들지 못하도록 함- 성능이 느려질 수 있음- 데드락 상태에 걸릴 수 있음 교착 상태(DeadLock): 두 개 이상의 일련의 프로세스 혹은 스레드들이 서로가 가진 자원을 기다리며 block된 상태- 자원 : 하드웨어, 소프트웨어 등을 포함하는 개념- 숫자 = 자원, 자동차 = 프로세스- 각각의 자동차가 모두 2개의 자원을 확보하여 지나가려고 함 -> 모두 한 가지 자원을 선점하는 데에는 성공했지..

운영체제 2025.02.10

16. 동기화(스핀락, 세마포어, 뮤텍스)

데이터 접근- 데이터가 저장되어 있는 위취로부터 데이터를 읽어와서 연산한 뒤, 연산한 결과를 이전에 저장되어 있던 그 위치에 다시 저장- 데이터를 읽기만 하면 문제가 없는데, 데이터를 연산하고 수정하게 되면 누가 먼저 읽어 갔는지에 따라 결과가 달라질 수 있음-> 이때 동기화(Synchronization) 문제 발생 프로세스 동기화(Process Synchronization): 여러 프로세스 / 스레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는것- 공유 데이터의 동시 접근은 데이터의 불일치 문제를 발생시킬 수 있음- 일관성(Consistency)유지를 위해서는 협력 프로세스 간의 실행 순서를 정해주는 메커니즘이 필요 경쟁 상태(Race Condition): 여러 프로세스 / 스레드가 동시에 같은 ..

운영체제 2025.02.10

15. Paging : Smaller Table

Motivation- TLB가 관리할 수 있는 page보다 더 많은 page를 요구하는 프로세스를 처리하는 경우, page table에 사용되는 메모리 공간을 줄이는 방법 Paging : Linear Tables: 일반적으로 시스템에서 모든 프로세스에 대해 하나의 page table을 가짐- page table size = (가상 주소 공간의 크기 / page의 크기) x page table entry의 크기-> 계산해보면 page table이 너무 커서 너무 많은 메모리를 사용하고 있음 1. Large Page : Smaller Table: page의 크기를 늘려서 page table size를 줄이는 방법- page 자체 활용도가 낮아서(page 자체 크기가 커서) 내부 단편화가 발생-> 낭비하는 공..

운영체제 2025.02.10

14. TLB(Translation Look-aside Buffers) 심화

TLB: MMU(Memory Management Unit)의 일부분이자, 주소 변환의 하드웨어 캐시- TLB에는 자주 사용하는 VPN(Virtual Page Number)와 PFN(Pysical Frame Number)정보가 쌍으로 존재하며 이를 사용해 가상 주소를 실제 주소로 변환하도록 도와주는 HardWare Cache- 이를 사용해 CPU가 Paging기법으로 주소 변환을 할 때, Page Table이 아닌 TLB에 접근-> CPU가 원하는 VPN과 PFN의 정보가 TLB에 있다면 해당 정보로 빠르게 주소 변환을 할 수 있음- 특징장점 : 해당 정보를 Page Table없이 TLB로 가져오기 때문에 주소 변환이 빠르게 수행됨단점 : 해당 정보가 TLB에 없다면 어쩔 수 없이 Page Table에서 ..

운영체제 2025.02.10

13. TLB(Translation Look-aside Buffer)

TLB(Translation Look-aside Buffer): 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시- 페이지 테이블을 캐싱한 저장장치- 페이지 교체에는 LRU 알고리즘 적용- MMU에 포함되어 있는 작은 캐시 -> 내부에서 여러 계층으로 존재할 수 있음- 최근에 일어난 가상 메모리와 물리 주소의 변환 테이블 저장- CPU가 가상 주소로 메모리에 접근하려고 할 때, 우선 TLB에 접근하여 가상 주소에 해당되는 물리 주소를 찾고 TLB에 매핑이 존재하지 않으면 MMU가 페이지 테이블에서 해당되는 물리 주소로 변환한 후 메모리에 접근 - TLB 사용 이유페이지 테이블은 메인 메모리에 존재해서 CPU는 메인 메모리에 최소 2번은 접근해야 원하는 데이터를 얻을 수 있음페..

운영체제 2025.02.10

12. 가상 메모리 & 요구 페이징 & 페이지 교체

가상 메모리(Virtual Memory): 실제 메모리 용량보다 커보이게 하는 기술- 어떤 프로세스가 실행될 때 해당 프로세스 전체가 메모리에 올라가지 않아도 실행할 수 있다는 점에서 착안- 참조 지역성과 관련이 깊음- RAM & DISK를 하나의 추상화된 메모리 영역으로 제공- 운영체제는 가상 메모리 기법을 통해 프로그램의 논리적 주소 영역에서 필요한 부분만 메모리에 적재하고 나머지 부분은 디스크에 저장 1. 장점프로그램이 실제 물리메모리 크기에 제한받지 않음여러 개의 프로그램을 동시에 실행할 수 있어 CPU 이용률과 처리율이 증가프로그램 SWAP에 필요한 입출력이 감소 2. 가상 주소 공간 (Virtual Address Space)- 사용자 / 프로세스의 논리적인 메모리 공간0번지부터 시작메모리 관리..

운영체제 2025.02.10

11. 페이징(Paging)

페이징(Paging): 프로세스의 가상 주소 공간을 고정적인 크기로 나누어서 메모리에 할당하는 방식Page: 고정적인 크기 단위Page Frame가상 공간의 page를 실제 메모리에 할당할 때 - 가상 메모리에서는 page, 실제 메모리에서는 frame이라고 불리는 고정 크기의 공간으로 프로세스를 실행-> 각각의 페이지는 물리 메모리의 프레임과 매핑- 페이지를 연속적으로 배치하지 않고 분할하기 때문에 외부 단편화가 발생하지 않음- 페이지는 고정 분할 방식으로 각 페이지의 사이즈는 고정-> 프로세스는 메모리에 여유가 발생할 때마다 Physical Memory 영역에 할당할 수 있게 됨으로써 외부 단편화 문제가 없음- 프로세스를 실행하기 위해 모든 페이지가 적재될 필요가 없음-> 물리 메모리보다 큰 프로세스..

운영체제 2025.02.10

10. 세그멘테이션(Segmentation)

Segmentaion: 가상 주소 공간을 세그먼트 단위로 실제 메모리 주소 공간에 독립적으로 각각 매핑하는 방식1. 정의Motivation- 기존 가상 주소 공간에서는 Heap과 Stack 사이의 사용하지 않는 공간도 할당되므로 비효율성이 발생사용하지 않는 크기가 발생하므로 메모리 공간이 낭비됨16KB이상의 메모리가 큰 주소 공간에는 프로세스를 지원할 수 없음Code 공간에 여러 코드가 들어가서 중복이 발생할 수 있음Effect- 이로 인해 Heap과 Stack 사이의 사용하지 않는 비효율성인 문제를 해결더 이상 메모리 공간이 낭비되지 않음이전보다 훨씬 더 많은 주소 공간을 지원할 수 있음세그먼트는 주소 공간 간에 Code 공간을 공유하면서 메모리를 절약할 수 있음세그먼트(Segment): 메모리에서 일..

운영체제 2025.01.23

9. 주소 변환(Address Translation)

주소 변환: CPU에 있는 가상 주소를 DRAM에 있는 실제 메모리의 주소로 변화하는 하드웨어의 지원을 의미 (= 주소 재배치)- 이를 통해 OS가 프로세스를 가상 주소에서 실제 메모리 주소로 착각하게 만드는 가상화를 수행 Base and Bounds Register- 주소 변환 기법을 사용하기 위해서는 CPU에 2개의 하드웨어 레지스터가 필요Base 레지스터 : 가상 주소 공간이 실제 메모리에 재배치되었을 때 주소 공간의 시작 부분을 가리킴Bound 레지스터 : 가상 주소 공간의 크기를 나타냄- base, bound 레지스터 모두 CPU에 존재하는 하드웨어(DRAM) - IN PICTURE)bound 레지스터는 16KB로 가상 주소 공간의 크기를 알려줌base 레지스터는 32KB로 실제 메모리 주소 공..

운영체제 2025.01.23