운영체제(11)
-
[OS] Thread - 동기화, Critical Section, 뮤텍스와 세마포어, 교착상태와 기아상태
동기화(Synchronization) ◦작업들 사이에 실행시기를 맞추는 것 ◦여러 스레드가 동일한 자원 접근시 동기화 이슈 발생 ◦동일자원을 여러 스레드가 동시수정하면, 각 스레드 결과에 영향을 준다 동기화 이슈 해결방안 ◦Mutual exclusion(상호배제) ‣ 임계 자원(critical resource) g_count ‣ 임계 영역(critical section) lock.acquire(), lock.release() ◦여러 스레드가 변경하는 공유변수에 대해 Exclusive Access필요! (스레드가 동시 접근하지 못하게 막자) Mutex 와 Semaphore ◦Critical Section(임계영역)에 대한 접근을 막기위한 locking 필요 ◦Mutex(binary semaphore) ‣ ..
2020.12.20 -
[OS] Thread - 개념, 장단점, Thread vs Process
Thread(스레드) ◦ 프로세스 내에서 동작하는 여러 실행의 흐름 ◦ 프로세스가 밧줄이라면 스레드는 밧줄을 이루는 실! ◦ 스레드들은 동시 실행가능 ◦ 프로세스 안에 있으므로 프로세스의 데이터를 모두 접근 가능 ◦ 각기 실행이 가능한 stack존재 Thread 장점 1. 사용자에 대한 응답성 향상 2. 자원 공유 효율 ‣ IPC기법과 같이 프로세스 간 자원공유를 위해 번거로운 작업이 필요없음 ‣ 프로세스 안에 있으므로 프로세스의 데이터 모두 접근 가능 Thread 단점 1. 스레드 중 한 스레드만 문제가 있어도 전체 프로세스가 영향을 받음 2. 스레드를 많이 생성하면 Context Switching이 많이 일어나 성능저하 Process와 Thread 비교
2020.12.20 -
[OS] 프로세스간 커뮤니케이션(IPC 기법 - 파이프, 메시지큐, 공유메모리)
IPC(Inter Process Communication) 프로세스간 커뮤니케이션하기 위한 통신방법 대부분의 IPC기법은 커널공간을 활용하는 것임. (커널영역은 공유하기 때문) 1. Pipe (파이프) ◦ 단방향 통신 ◦ fork() 로 자식프로세스 만들었을때 부모와 자식간의 통신 2. 메시지 큐 (message queue) ◦ 양방향 통신 ◦ 부모/자식간 통신X 어느 프로세스간에 데이터 송수신 가능 3. 공유 메모리 (shared memory) ◦ kernel영역에 메모리 공간을 만들어서 그 공간에 대한 주소값을 여러 프로세스가 key값으로 접근가능 모두 커널공간을 활용해서 프로세스간 데이터 공유
2020.12.20 -
[OS] 컨텍스트 스위칭(Context Switching, PCB, PC, SP)
Context Switching 🅰process ---> 🅱process ⬆ Scheduler가 프로세스를 바꿔주는 메커니즘을 컨텍스트 스위칭이라고 한다. 선행으로 알아야 할 개념 (PCB, PC, SP) PCB (Process Control Block) ‣ ProcessID, PC, SP 등 프로세스가 실행중인 상태정보를 구조화해서 저장하는 곳 PC (Program Counter) ‣ 다음에 실행할 명령어의 주소 저장, 제어 레지스터* SP (Stack Pointer) ‣ 현재 스택 영역에서 가장 마지막 부분(가장 최근에 저장된)을 가르킴, 데이터 레지스터* * 제어 레지스터 : 현재의 동작에 이어 다음 단계에 수행할 명령어의 주소를 갖는 레지스터 * 데이터 레지스터 : 데이터의 일시적인 저장에 사용되..
2020.12.20 -
[OS] 인터럽트 - 정의, 종류, 처리 예
Interrupt • 인터럽트란? CPU가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치나 또는 예외상황이 발생하여 처리가 필요할 경우에 CPU에 알려서 처리하는 기술 (일종의 이벤트) • 인터럽트 종류 ◦내부 인터럽트 (=SW인터럽트) ‣ 주로 프로그램 내부에서의 예외상황 - 0으로 나눴을 때 - Overflow/Underflow - 사용자모드에서 허용되지 않은 명령 또는 공간 접근시(kernel) ◦외부 인터럽트 (=HW인터럽트) ‣ 주로 하드웨어에서 발생 ‣ 전원이상/ 기계문제/ 키보드 등 IO관련 이벤트/ Timer 이벤트 • 시스템 콜 인터럽트 ◦시스템콜 실행을 위해서는 강제로 코드에 인터럽트 명령을 넣어, CPU에게 실행시켜야 함. • 인터럽트 처리 예 ◦입출력 하드웨어 등의 장치 ..
2020.12.20 -
[OS] 선점형과 비선점형 스케쥴러
선점형과 비선점형 스케쥴러 ◦선점형 스케쥴러(Preemptive Scheduling) :하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음 ‣ 응답시간⬇ ‣ RoundRobin 스케쥴러 (시분할시스템) ◦비선점형 스케쥴러(Non-Preemptive Scheduling) :하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 차지할 수 없음 ‣ 프로세스가 자발적으로 blocking 상태에 들어가거나, 실행이 끝났을 때만 다른 프로세스로 교체가능 ‣ 응답시간⬆ ‣ FIFO, SJF, Priority-based 스케쥴러
2020.12.20