[OS] 32장: Common Concurrency Problems
·
🖥️ Computer Science/Operating System
32장: Common Concurrency Problems병행성 특징장점처리율 향상멀티 스레드의 장점단점오류 발생 가능성이 높음교착 상태 오류비 교착 상태 오류비교착 상태 오류원자성 위반작업을 원큐에 못 끝내는 경우들ex) 인터럽트 당하면 안되는 것들직렬성 보장 필요공유변수에 락 사용순서위반A 작업을 해야 B 작업을 할 수 있는 스레드 작업공유 변수 접근 순서 역전을 막기 위해조건 변수로 초기화교착 상태데드락이 발생하는 코드데드락은 왜 발생하는가 ?복잡한 의존성캡슐화의 특성교착상태 발생조건 4가지아래 중 단 하나라도 만족하지 않으면,교착 상태는 일어나지 않음즉, 하나라도 안 일어나게 해야 함상호 배제한 번에 한 스레드만 자원을 사용점유와 대기최소한 하나의 자원을 점유한 스레드가다른 스레드 작업을 요구하며..
[OS] 31장: Semaphore
·
🖥️ Computer Science/Operating System
31장: SemaphoreSemaphore APIsem_init(세마포어 변수, 0, 초기값)세 번째 매개변수는 음수가 될 수 없음sem_t s;sem_init(&s, 0, 1); // 초기값 1sem_wait(&s)sem 값을 하나 감소 시킴감소시켰는데, 결과가 0 이상이면 바로 반환감소시켰는데 음수이면 0될 때까지 대기sem 값이 음수일 때, 절대값은 대기 중인 스레드 수와 같음sem_post(&s)세마포어 값 하나를 증가시킴대기 중인 스레드가 있다면, 하나를 깨움 (큐로 동작)이진 세마포어: Lock으로 활용하기sem_t s;sem_init(&s, 0, 1);sem_wait(&m);// 여기에 임계영역 코드 작성sem_post(&m);0번 스레드가 wait()하고 임계영역 진입1번 스레드가 wait..
[OS] 30장: Condition Variables
·
🖥️ Computer Science/Operating System
30장: Condition Variables조건변수 개요pthread_cond_t c; 선언 + 초기화 필요wait와 signal을 통해 사용함wait() 호출에 Mutex 변수가 필요함 pthread_cond_wait(pthread_cond_t* c, pthread_mutex_t *m); 조건 변수도 공유변수이기 때문에. 대기 상태로 갈 때 락을 해제함 깨어날 때 두 번째 인자 m에 대한 락을 다시 획득조건변수 사용 기초int done = 0;pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t c = PTHRREAD_COND_INITIALIZER;void thr_exit() { pthread_mutex_lock(&m); ..
[OS] 28장: Locks
·
🖥️ Computer Science/Operating System
28장: Locks27장 복습: Lock API 함수전역변수로 선언pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t init = PTHREAD_COND_INITIALIZER;임계 영역에 상호 배제 기능 제공pthread_mutex_lock = 임계영역 lock 요청, lock을 할 수 없다면 대기pthread_mutex_trylock = lock 요청, lock 못 얻으면 대기X 리턴pthread_mutex_unlock = lock 해제, 대기중인 스레드는 lock 얻음Lock 사용 법Lock 변수 선언 및 초기화 pthread_mutex_init(뮤텍스 객체, 속성) - 성공하면 0 반환임계영역 시작에서 Lock, 끝나면 Unlockloc..
[OS] 19장: TLB (Translation Lookaside Buffers)
·
🖥️ Computer Science/Operating System
19장: TLB (Translation Lookaside Buffers)MMU의 한 구성요소가상 - 물리 주소변환에 사용되는 캐시 역할TLB 작동 예시a[0]에 접근VPN 06 접근TLB에 VPN 06 검색 → 없음, 미스났음TLB에 VPN 06 갱신a[1] 접근VPN 06 접근TLB에 VPN 06 검색 → 있음, 적중3 miss & 7 hit공간 지역성이 잘 드러남정리CPU로부터 논리적 주소가 나옴VPN을 통해 TLB 확인없으면 페이지 테이블 조회함TLB 장점여러 VPN을 병렬로 탐색 가능시간 지역성한 번 사용됐으면 또 사용될 가능성 높음공간 지역성인접한 주소가 사용될 가능성 큼TLB 할 일Context Switch프로세스 A, B의 VPN을 통한 TLB 사용VPN 10을 통해 TLB 확인했으나 없음..
[OS] 18장: 메모리 가상화의 Paging
·
🖥️ Computer Science/Operating System
18장: 메모리 가상화의 Paging세그먼트 복습주소 변환 = Segment Table공유 및 보호 기능 제공빈 공간 탐ㅅ맥 오버헤드 및 외부 단편화 문제페이징 개요주소변환 = 페이지 테이블 사용가상 주소 공간 → 동일한 크기의 페이지로 분할물리 주소 공간 → 동일한 크기의 페이지 프레임으로 분할페이징 장점유연성프로세스 주소공간 상관없이 효율적임heap, stack, .. 신경 X단순성페이지 크기 = 페이지 프레임 크기빈공간 관리가 간단함페이징 단점→ 내부 단편화페이징 사용물리 주소 = 128byte가상 주소 = 64byte페이지 프레임크기 = 16byte주소 변환가상 주소의 두 가지 요소VPN = Virtual Page Number (위 사진에선 4개만 필요 = 2비트)Offset물리 주소를 알려면..
[OS] 17장: Free-Space Management
·
🖥️ Computer Science/Operating System
17장: Free-Space Management물리 메모리의 빈 공간 관리할당과 회수를 통해 유지함분할과 병합물리 주소를 분할해서 사용하고, 다 쓰면 병합하는 식으로 동작분할메모리 요구를 하면,만족하는 크기의 빈 공간이 있을 때 할당 가능→ 20byte를 요구하면 안됨 (연속적이지 않아서)1바이트 요구주소가 20부터 시작인 노드가21로 바뀌고, len = 9로 바뀜병합사용 후 반환 시, 인접한 빈 공간과 합쳐짐가운데 10~19 사용중이던게 free 되었음0~19가 합쳐짐할당 공간의 크기 파악free 메소드에는 반환될 크기에 대한 정보가 없음Header 블록을 메모리에 두어서 정보를 받아냄Header 블록필수 정보할당된 크기추가 정보속도 향상을 위한 추가 포인터무결성 체크Header 블록이 있을 때,메모리..
[OS] 16장: Segmentation
·
🖥️ Computer Science/Operating System
16장: Segmentation개요세그먼트 = 임의의 길이의 연속된 주소 공간여기서는 Code, Heap, Stack을 세그먼트라 침주소변환 - 세그먼트 테이블물리 공간에 배치할 때, 세그먼트 단위로 배치함즉, 세그먼트마다 Base/Bounds 레지스터 필요 → 일반화 Base/Bounds 기법하나의 프로세스는 여러 개의 세그먼트로 구성됨세그먼트 주소 변환물리주소 = OffSet + BaseOffSet = 세그먼트 내에서의 위치가상 주소 공간에서 코드,힙,스택 별로 세그먼트가 있는데그 세그먼트 시작 지점에서의 위치로 Offset을 따짐Heap 주소 인코딩4200 번지의 세그먼트에서 인코딩하기4200 = 4096 + 104⇒ 01 | 0000 0110 1000Stack 주소 인코딩 (반대)스택은 거꾸로 ..
[OS] 15장: 주소 변환의 원리
·
🖥️ Computer Science/Operating System
15장: 주소 변환의 원리개요어떻게 메모리를 가상화 하여효율성과 제어를 달성할 것인가 ?효율성: 가상 주소 → 물리주소 변환의 속도제어권: 접근 가능한 메모리 위치 제한유연성: 프로그래밍 편의메모리 가상화하드웨어 지원이 필요함빠른 주소 변환MMU, TLB, Cache ..OS 역할빈 공간 관리 및 할당관리 효율 및 접근 제어가상 공간의 동적 운영메모리 사용 예void func() { int x = 3000; x = x + 3;}어셈블리어 변환128 번지 명령어 인출명령 실행132 번지 명령어 인출명령 실행135 번지 명령어 인출명령 실행가상 주소와 물리 주소물리적 주소물리 메모리에 그대로 올리면 안됨→ OS 재배치 작업 필요메모리 접근 시마다 실제 주소로 변환 작업Base/Bou..
[OS] 13장: Memory Virtualization
·
🖥️ Computer Science/Operating System
13장: Memory Virtualization메모리 가상화가 어떻게 이루어 지는지가상 주소와 물리 주소를 분리하여각 프로세스에서 독점 메모리가 있다는 환상을 부여함가상 메모리 시스템의 주 목표투명성→ 프로그래머는 신경 안 써도 되게 함효율성시공간 측면고속 주소 변환보호Isolation 원칙