Semaphore 도 IPC로 분류가 되는데, 앞서 알아봤던 Message Queue, Shared Memory와 같이 서로다른 프로세스간 데이터 전송을 목적으로 둔 것이 아니다. Semaphore 은 프로세스간 데이터를 동기화하고 보호하는데 목적을 둔다. 그런데 왜 IPC로 분류를 할까 ? Semaphore 도 결국 서로다른 프로세스간 통신을 함에 있어서 동기화 문제를 해결하기 위해 사용되기 때문이다. 결국 프로세스간 통신을 함에 있어서 사용되는지 여부가 중요한 것이다. (?) Semaphore 의 과정 - 세마포어 생성 - 임계구역 잠금 - 공유자원 사용 - 임계구역 잠금해제 - 세마포어 제거 위 5가지 과정을 통해 Semaphore을 이용해 서로다른 프로세스간의 통신에서 동기화 문제를 해결한다. 이..
MeroZemory 님의 한마디 ! 공유라이브러리는 가상메모리 상에서는 공유메모리영역에 Load되고, 이 영역은 32bit 운영체제 기준으로 0x80000000 부터 1GB이다. 공유메모리자체는 모든 프로세스가 각각 가지는 것이고, 실제 DLL이 로딩되는건 물리메모리에 한 번 올라간다. 각 프로세스의 공유메모리영역으로부터 저 물리메모리의 DLL 메모리에 매핑된다. ( 페이지 단위로 ) 모든 프로세스가 해당 DLL을 해제하기 전까지 해당 DLL은 물리메모리 상에 유지된다. 공유 라이브러리가 필요한 이유는 무엇일까 ? A) Object 파일은 자체만으로 실행이 불가능하다. 왜냐하면 printf의 구현코드를 모르기 때문이다 ! 그러면 Object 파일을 실행시키고 싶다면 어떻게 해야할까 ? A) printf의..
실시간 CPU 스케줄링에는 연성과 경성이 있다. 경성은 지나면 아무의미가 없는 경우이다. 지연시간 최소화 1. 인터럽트 지연시간. 2. 디스패치 지연시간. 이 두가지가 실시간 시스템의 성능을 좌우한다. ( 직접 해볼 수 없기 때문에 와닿지는 않는다 ) 인터럽트 지연시간. - CPU에 Interrupt가 발생한 시점부터 인터럽트 처리루틴이 시작하기까지의 시간. - 인터럽트 지연시간은 정해진시간보다 작아야한다. 주요 원인은 커널 자료구조 갱신동안 Interrupt가 불가능하다는 점 때문이다. 디스패치 지연시간. - 스케줄링 디스패처가 하나의 프로세스를 봉쇄하고 다른 프로세스를 시작하는데 걸리는 시간. ( 얘를 최소화하는 가장 효과적인 방법은 선점형 스케줄링을 적용하는 것이다. ) 근데 결국 Context S..
다중 처리기라는 것은 쉽게 말해 CPU의 역할을 하는 것이 여러 개라는 것이다. 처리기가 여러개이기 때문에 부하분산이 가능하지만, 그에 따라서 스케줄링은 더 복잡해진다. ( 이 전에 설명했던 스케줄링 기법들과 마찬가지로 최선의 해결책이란 존재하지 않는다. 그저 상황에 따를뿐. ) 요즘은 하나의 칩에 여러개의 처리기 코어가 들어가있는 다중코어 프로세서가 많이 사용된다. ( 16코어 8스레드 → 128개의 논리 프로세서 ) - 비대칭 다중처리 (Asymmetric Multiprocessing) : 비교적 간단하다 하나의 처리기를 master로 두어 해당 처리기가 모든 스케줄링결정과 입출력처리, 다른 시스템의 활동을 취급하게한다. 다른 처리기들은 User코드만을 수행한다. 하나의 처리기가 다 처리하기 때문에 ..
1. 선입선처리 스케줄링 (FCFS) - First Come First Served - 이름 그대로 먼저요창한 Process가 CPU를 먼저 할당받는 스케줄링 기법이다. ( FIFO Queue를 통해 쉽게 구현이 가능하다. Ready Queue를 그대로 이어받는다. ) - 먼저들어온 Process의 처리시간이 길다면 나머지 Process들의 대기시간이 길어질 수 있다. ( 상황에따른 변동폭이 매우 큰편이다. ) - 비선점형 스케줄링 알고리즘이다. ( 새로 준비완료된 Process가 이미 CPU를 할당받은 Process의 CPU를 선점할 수 없다. ) 2. 최단 작업 우선 스케줄링 (SJF) - Short Job First - 이름 그대로 Burst Time(쉽게말해 수행시간)이 가장적은 Process에게..
CPU 스케쥴링 ? CPU를 여러 프로세스간에 교환함으로써, 효율을 올린다. ( 동시에 동작하는 것과 같은 효과 ) 스케쥴링에는 프로세스 스케줄링과 스레드 스케줄링이 있다. 우선, 메모리내에 여러 프로그램이 할당되어 유지되어야 한다. 그리고 특정 프로세스가 실행중 대기해야할 경우, 그 프로세스로부터 CPU를 회수해 다른 프로세스에 할당해준다. 이 때, 대기해야할 경우에는 대표적으로 입력요청이 있다. → Context Switching이 발생한다. ( Dispatcher 호출 ) 위와같이 CPU가 유휴상태가 되면, 운영체제는 Ready Queue에 있는 Process중 하나를 선택해 실행한다. 이 때 어떤 Process를 실행할지 결정하는 것이 단기 스케줄러이다. ( 장기 스케쥴러는 디스크에 저장되어 있는..