728x90
반응형

CS/OS 22

[OS] Process Synchronization(2) - 프로세스 동기화

동기화 하드웨어 단일 프로세서 시스템의 경우 공유된 변수를 변경하는 동안에 인터럽트를 발생할 수 없도록 하면 위와 같은 문제를 보다 쉽게 해결할 수 있다. 인터럽트 억제 방법을 이용한 임계 구역 문제의 해결책 do{ disable interrupt critical section enable interrupt remainder section }while(1); 다중 프로그래밍에 큰 영향을 주므로 효율적인 해결책은 아니다. 다중 프로세서 시스템에서는 인터럽트가 발생할 수 없도록 하더라도 여전히 두 프로세서에서 두 프로세스가 동시에 실행될 수 있어 임계 구역 문제를 해결할 수 없다. 이 때문에 인터럽트를 억제하는 방법 대신 대부분의 시스템은 이런 문제를 해결할 때 사용할 수 있는 특수한 하드웨어 명령어를 제공..

CS/OS 2023.06.15

[OS] Process Synchronization(1) - 프로세스 동기화

프로세스 동기화 프로세스는 독립적으로 수행되면 올바르게 동작하나 공유 변수의 값이 결과에 영향을 주므로 병행으로 수행되면 실행되는 순서에 따라 올바르게 동작하지 않을 수 있다. 공유 메모리에 있는 변수 counter의 값이 5일 때, 생산자와 소비자가 각각 "counter++;"와 "counter--;"를 병행으로 수행하면 결과는 5가 되어야 하지만 그렇지 않을 수 있다. → 이처럼 병행으로 수행되는 여러 프로세스가 공통된 데이터를 조작할 때 결과가 접근 순서에 의해 결정되면 경합 상태(race condition)가 존재한다고 한다. 임계 구역 문제 임계 구역(critical section) : 프로세스 코드의 일부분으로서, 다른 프로세스와 공동으로 사용하는 변수, 테이블, 파일 등을 변경하는 부분임계 ..

CS/OS 2023.06.14

[OS] Memory Management(2) - 메모리 관리

하나의 프로세스 당 하나의 Page Table을 가지고 있기 때문에 이를 효율적으로 관리할 필요가 있음 따라서 Page Table Structure에 따라 구분 가능 페이지를 Hierarchical(계층적)으로 쪼갠 것 간단한 기술의 예로는 2레벨 Page Table, 위처럼 큰 범주로 먼저 나누고 그 안에서 또 나누는 형태 논리적 주소는 32비트, 4K 크기의 Page로 나뉜다. 한 테이블 안에 20bit -> 100만개 entries page offset은 12bit -> 4096, 4K 그림에서 보이듯 page number는 10bit씩 2개로 나누고 page offset은 12bit로 표현 p1은 outer page table에 사용되는 주소값, p2는 다음 level에서 사용(다음 내용 이어서)..

CS/OS 2023.05.29

[OS] Memory Management - 메모리 관리

모든 프로그램은 실행시키려면 메모리 위에 존재해야한다. Input Queue를 통해 메모리로 올라온다. Input Queue에서 기다렸다가 올라옴 사용자는 몇 단계를 거쳐 프로그램을 실행시킨다. source 작성 -> compile -> object module, 한 가지의 module만 존재하는 것이 아니기 때문에 other object modules과 연결시키기 위해 linkage editor가 존재 -> 그 결과로 load module -> loader로 메모리 load -> System library와 함께 load하여 사용 -> CPU 할당 받아 실행 Address binding : Instruction과 Data를 메모리 위로 올린다는 것 Compile time : Compile 하기 전 실제..

CS/OS 2023.05.27

[OS] Deadlocks (2) - 교착상태

사용하는 변수는 4가지 Available : 여유분 Max : 최대 필요한 자원의 개수 Allocation : 할당된 자원의 개수 Need : 앞으로 추가적으로 필요한 자원의 개수 2차원 matrix형태로 모두 존재 앞으로 필요한 자원의 개수는 최대치에서 이미 할당된 자원을 빼준 정도 어느 한 순간 Safety한 상태인지 체크 여러 개의 process가 존재할 때 안정적으로 처리할 수 있는 순서도가 있는가 확인 fisnish가 false인 것 중 need(i)가 work보다 작거나 같은 것을 찾는다 만약 존재하지 않는다면 6단계로 Need는 필요한 만큼 줬다가 다시 회수, 여유분이 늘어나는 것은 이미 할당된 것들 회수 Finish[i]를 True로 전환하고 다시 2단계로 만약 모든 프로세스가 Finish..

CS/OS 2023.05.16

[OS] Deadlocks (1) - 교착상태

데드락이 어떻게 발생하는지, 어떻게 방지하고 회피하는 방법 항상 자원이 부족해서 발생하는 현상 P1이나 P2가 작업을 완료하기 위해서는 tape drives 2개 필요 다 만족하기 위해서는 4개가 필요한데 전체 2개가 필요하면 자원이 부족한 경우가 발생할 수 있음 서로 자원을 필요로 하는데 부족한 경우가 발생하면 이는 데드락 상태를 야기 둘다 1로 초기화 되어있음 wait(A), wait(B)로 서로 기다리고 있음 처음 값이 1이어서 통과하지만 0으로 줄어듦 그 뒤는 while문에 걸려 무한반복으로 deadlock signal operation을 만나면 값이 증가되어 종료될 수 있지만 그곳까지 가지도 못함 또 다른 예로 다리 상태 어느 한 쪽은 양보를 해야 해결이 되는데 다른 문제가 발생할 수 있음 후진..

CS/OS 2023.05.09

[OS] Process Synchronization (2) - 프로세스 동기화 (강의 내용)

일반적인 프로세스 구조 critical section 진입 전 entry section을 통해 3가지 조건 중 상호배제 조건을 갖춤 위 그림 중 위 그림은 상호배제 조건을 만족한 그림으로 count 변수 사용을 상호 배제 상태에서 진행함 하지만 아래 그림은 같은 변수를 같은 동기화 내에서 진행하는 그림으로 표현됨 어느 한 process가 critical section에 진입하게 되면 interrupt system을 disable해버린다. 그렇게 할 경우 다른 process가 같은 critical section에 진입하는 것을 방지할 수 있다. CPU가 한 개일 경우에는 위처럼 해결할 수 있으나 그렇지 않은 경우에는 확장성에 문제가 생겨 그렇게 할 수 없다. Busy Waiting을 요구하지 않는 Sync..

CS/OS 2023.05.04

[OS] Process Synchronization - 프로세스 동기화 (강의 내용)

공유하고 있는 데이터에 대해서는 데이터 일관성 문제가 발생할 수 있음 공유 변수에 대한 접근을 순서화 해줄 필요가 있음 'Consumer'와 'Producer'는 count라는 광역 변수를 공유하여 버퍼라는 데이터를 공유하는 프로세스 count라는 광역 변수를 사용하여 채우는 것 count 광역 변수를 사용하여 데이터를 소비하는 것 assembly 언어를 사용하여 표현할 수 있음 (위 Critical Section) 어느 instruction이 마지막에 실행되냐에 따라 값이 변하는 현상 : Race Condition Critical Section은 공유하고 있는 변수 사이 변경이 있을 때 많이 일어남 따라서 Critical Section에 들어가는 process는 하나만 되도록 해야함 그래서 위 과정 전..

CS/OS 2023.04.28

[OS] 4. Thread 연습문제

4.1 Provide two programming examples in which multithreading does not provide better performance than a single-threaded solution. Answer: 멀티스레딩이 단일 스레드 솔루션보다 성능이 향상되지 않는 두 가지 프로그래밍 예제를 제공합니다. 1. 단일 처리기 시스템에서의 계산 집약적인 작업 - 만약 작업이 단일 처리기 시스템에서 실행되는 계산 집약적인 작업이라면, 멀티스레딩은 성능 향상을 제공하지 않을 수 있습니다. 이 경우 CPU가 한 번에 하나의 작업만 처리할 수 있으므로 멀티스레딩은 여러 스레드 간의 문맥 전환 오버헤드만 추가할 뿐입니다. 2. 입출력 작업이 많은 작업 - 입출력 작업이 많은 작업에..

CS/OS 2023.04.16
728x90
반응형