본문 바로가기

프로그래밍101

[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.
[OS] 프로세스 구조와 상태 - running, ready, blocked 프로세스 구조 stack : 임시 데이터(함수호출, 로컬변수 등) heap : 코드에서 동적으로 만들어지는 데이터 data : 변수/초기화된 데이터 code(text) : 코드 프로세스 상태 3가지 running state: 현재 CPU에서 실행 상태 ready state: CPU에서 실행 가능 상태(실행 대기 상태) block state: 특정이벤트 발생대기 상태(ex 프린팅이 다 되었다!) 2020. 12. 20.
[OS] 운영체제의 CPU 관리 - 스케줄링 알고리즘 📚 CPU 스케줄링(CPU Scheduling) 매 시점 어떠한 프로세스에게 CPU를 할당해 작업을 처리할 것인지를 결정한다. * 프로세스: 메모리에 올려져서 실행중인 프로그램 * 스케줄러: 어떤 프로세스에게 자원을 할당할지를 결정하는 OS 커널의 모듈(프로세스 실행 관리) 🔔 CPU 스케줄링의 목표 CPU를 가장 효율적으로 사용하면서도 특정 프로세스가 불이익을 당하지 않도록 하는 것이다. 📖 대표적인 CPU스케줄링 기법 선입선출(FIFO), 라운드 로빈(Round Robin), 우선순위 기법(Priority) 1.FIFO 스케줄러 - 먼저 CPU를 사용하기 위해 도착한 프로세스를 먼저 처리해주는 방식. ex. 일상 생활에서 줄서기를 하는 것과 유사 - CPU 자체의 효율적인 사용 측면에서는 문제가 없지.. 2020. 12. 20.
반응형