본문 바로가기
개발공부 개발새발/OS

OS ) 시스템콜, 코루틴, 그리고 이벤트 루프란?

by 휴일이 2024. 10. 29.

시스템 콜

운영체제의 서비스를 제공받기 위한 요청.

  • 일종의 인터럽트 (소프트웨어적 인터럽트)

이중 모드

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