시스템 콜
운영체제의 서비스를 제공받기 위한 요청.
- 일종의 인터럽트 (소프트웨어적 인터럽트)
이중 모드
CPU 가 명령어 처리 방식을 실행하는 모드를 사용자 모드/커널 모드로 구분하는 방식.
- 사용자 모드.
- 프로그램 실행 모드.
- 입출력 명령 같은 HW 접근 명령어를 실행할 수 없음.
- 그래서 사용자 모드로 실행되는 일반적인 프로그램은 자원에 접근 불가.
- 커널 모드.
- 운영체제 기능을 사용할 수 있는, 커널 영역의 코드를 실행할 수 있는 모드.
- 운영체제는 커널 모드로 실행되니 자원에 접근 가능.
사용자 모드로 실행되는 프로그램이 “시스템 자원”에 접근하기 위해 운영체제 서비스를 받으려면, 커널 모드로 전환되어야 함.
이 때, 운영체제 서비스를 제공받기 위한 요청을 “시스템 호출” 이라고 함.
타임 슬라이스
CPU 를 사용하는 스레드(작업, 프로세스)는 본인에게 할당받은 시간 내에 작업이 끝나지 않으면 다시 준비 상태로 돌아가 “실행”되길 기다림.
- 이 때, 작업에게 할당된 시간이 “타임 슬라이스”
- 할당 시간이 끝나면 “타이머 인터럽트”를 받고 준비 상태로 되돌아감.
인터럽트
에러가 났을 때 뿐만 아니라, 사용자 모드로 실행되던 소프트웨어가 “커널 모드”를 실행하고 싶으면 인터럽트 발생.
- 에러가 났을 시 : CPU 를 불러서 해당 에러 처리.
- 시스템 콜을 했을 시 : I/O 작업 등 운영체제 기능 사용하고 싶어 요청.
컨텍스트 스위칭 Context Switching
기존 프로세스의 문맥을 PCB 에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것을 컨텍스트 스위칭, 한국어로는 문맥 교환이라고 함.
- 한 마디로 기존 프로세스가 CPU 사용을 마치고 다른 프로세스를 실행하는 것.
- 프로세스 수행을 재개하기 위해 기억해야 할 정보를 문맥(Context) 이라고 함.
- 컨텍스트 스위칭은 여러 프로세스가 끊임없이 빠르게 번갈아 가며 실행되는 원리로, 컨텍스트 스위칭이 자주 일어나면 프로세스는 그만큼 빨리 번갈아가며 수행됨. → 프로세스가 동시 실행되는 것처럼 보임.
문맥 교환을 너무 자주 하면 오버헤드 발생. → 자주 일어난다고 반드시 좋은 건 아님.
프로세스 제어 블록 PCB
프로세스와 연관된 정보를 저장하는 자료 구조.
- 프로세스 생명 주기와 주기가 같음.(프로세스 생성 시에 만들어지고 실행이 끝나면 폐기)
- 커널 영역에 생성.
- 프로세스 ID, 레지스터 값, 프로세스 상태, CPU 스케쥴링 정보, 메모리 관리 정보(페이지 테이블 정보), 사용한 파일과 입출력장치 목록 등등..
- PCB 에 컨텍스트 스위칭을 위한 정보가 백업됨.
코루틴이란?
- 대기 작업이 있는 동안 다른 작업을 처리하여 CPU의 유휴시간을 최소화하기 위한 컴퓨터 구성.
- A작업이 B가 작업한 값이 필요한데, B 가 아직 작업을 다 마치지 못했을 때.
- CPU를 사용하던 작업이 I/O 작업이 필요할 때.
- 대기 시간 동안 CPU 는 다른 작업을 할 수 있다.
- 하던 작업이 I/O 작업 등을 마치고 대기 상태로 들어가면 → 해당 작업을 준비 상태로 옮긴 후 → 실행 상태로…
그럼 이벤트 루프란?
프로그램이 대기 상태에서 실행할 작업을 관리함.
- 비동기적인 이벤트가 발생할 경우.
- 커널에게 요청해 백그라운드에서 처리함.
- I/O 작업 또는 네트워킹 작업은 “시스템 콜”을 이용해 커널에서 처리.
- 요청이 완료됐을 경우 → 해당 요청이 “대기” 상태로 변경 : 대기 큐에 추가.
- 이벤트 루프가 대기 상태를 준비 상태로 변경
- 대기 큐에서 호출 스택으로 이동
- 실행.
728x90
'개발공부 개발새발 > OS' 카테고리의 다른 글
OS ) 컴퓨터, 운영체제란 무엇인가. (2) | 2024.12.09 |
---|---|
OS ) 멀티 코어가 뭡니까? (0) | 2024.11.20 |
OS ) CPU와 메모리 (0) | 2023.11.02 |
OS ) 컴퓨터의 기본 구성 (1) | 2023.10.23 |
OS ) 운영체제의 구성 (2) | 2023.10.23 |