운영체제란
실행할 프로그램에 필요한 자원을 할당하고
프로그램이 올바르게 실행되도록 돕는 특별한 프로그램.
따라서 메모리에 적재되어야함
그래서 부팅될 때 항상 메모리의 커널 영역이라는 공간에 적재되어 실행됨
참고) 사용자 영역
커널 영역의 여집합
사용자가 이용하는 응용 프로그램이 적재되는 영역
커널(kernel)이란?
운영체제의 핵심 서비스를 담당하는 부분
운영체제가 제공하는 서비스 중 커널에 포함되지 않는 부분도 있는데
그 예가 사용자 인터페이스(UI; User Interface)이다.
운영체제는 응용 프로그램들이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호한다.
응용 프로그램이 자원에 접근하기 위해서는 운영체제에 도움을 요청해야한다.
응용 프로그램의 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근하여 요청한 작업을 수행한다.
운영체제는 이중 모드로 구현되는데
이중 모드란 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식이다.
사용자 모드는 운영체제 서비스를 제공받을 수 없는 실행 모드이고
커널 모드는 운영체제 서비스를 제공받을 수 있는 실행 모드이다.
따라서 사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공 받으려면
운영체제에 요청을 보내 커널 모드로 전환되어야 한다.
이때 운영체제 서비스를 제공받기 위한 요청을 시스템 호출(system call)이라고 한다.
사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받을 수 있다.
운영체제의 핵심 서비스
프로세스 관리
실행 중인 프로그램을 프로세스라고 한다.
윈도우의 [ 작업관리자 ]를 열어 [ 프로세스 ] 항목을 보면 굉장히 많은 프로세스가 실행 중인 것을 볼 수 있다.
일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있기에
CPU는 이 프로세스들을 조금씩 번갈아 가며 실행한다.
여러 프로세스가 동시에 실행되는 환경에서는
프로세스 동기화가 필수적이고 교착 상태를 해결해야 한다.
자원 접근 및 할당
모든 프로세스는 실행을 위해 자원이 필요함.
운영체제는 프로세스들이 사용할 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당한다.
CPU
일반적으로 메모리에는 여러 프로세스가 적재되고,
하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있다.
그래서 하나의 프로세스가 CPU를 이용하고 있다면 다른 프로세스는 기다려야 한다.
이에 운영체제는 프로세스들에 공정하게 cpu를 할당하기 위해 어떤 프로세스부터 cpu를 이용하게 할 것인지,
얼마나 오래 cpu를 이용하게 할지를 결정할 수 있어야 한다.
이를 cpu 스케줄링이라고 한다.
메모리
입출력장치
인터럽트 서비스 루틴은 운영체제가 제공하는 기능으로 커널 영역에 있다.
입출력장치가 발생시키는 하드웨어 인터럽트도 마찬가지..
입출력장치가 cpu에 하드웨어 인터럽트 요청 신호를 보내면
cpu는 하던 일을 잠시 백업한 뒤 커널 영역에 있는 인터럽트 서비스 루틴을 실행한다.
이처럼 운영체제는 인터럽트를 처리하는 프로그램,
즉 인터럽트 서비스 루틴을 제공함으로써 입출력 작업을 수행한다.
파일 시스템 관리
'혼공 스터디 > 혼자 공부하는 컴퓨터 구조 + 운영체제' 카테고리의 다른 글
[ 혼공컴운 ] 5주차 인증 1 : 프로세스 동기화 (0) | 2023.08.08 |
---|---|
[ 혼공컴운 ] 4주차 공부 인증 (0) | 2023.07.30 |
[ 혼공컴운 ] 3주차 공부 4: Nested RAID 종류 (0) | 2023.07.28 |
[ 혼공컴운 ] 3주차 공부 3: RAID의 정의와 종류 (0) | 2023.07.23 |
[ 혼공컴운 ] 3주차 공부 2: 보조기억장치 (0) | 2023.07.22 |