오래 못 할 짓 하지 않기
[ 운영체제 ] 2. OS Overview (커널, 서비스 종류 , 시스템 콜, 이중모드) 본문
OS는 규모가 가장 큰 프로그램 중 하나이다.
따라서, OS가 제공하는 기능은 아주 다양하지만
가장 핵심적인 서비스가 있다. ex) 휴대폰 - 여러 기능이 있지만 전화가 핵심
이러한 서비스들을 담당하는 부분을 커널(Kernel)이라고 한다.
그리고 우리가 운영체제를 공부한다는 것은 이러한 Kernel을 공부하는 것과 같다고 보면 된다.
(+운영체제이지만, 커널은 아닌 것 = UI)
이중모드 / 시스템 호출
사용자가 실행하는 프로그램은 자원에 직접 접근할 수 있을까? or 접근해도 될까?
→ NO
1) CPU에서 한 프로그램이 실행 중인데, 다른 프로그램에서 접근하는 일이 발생할 수 있다.
2) 메모리에서 데이터들이 꼬일 수 있다.
따라서, 운영체제는 다른 프로그램이 자원 (CPU,SSD 등등...) 에 접근하려고 할 때
자신을 통해서 접근하도록 하여 보호한다.
(자원 접근 대행)
● 이중 모드
: CPU가 명령어를 [ 사용자 모드 / 커널 모드 ] 로 구분하는 방식
1) 사용자 모드
- 운영 체제 서비스를 제공받지 X
- 커널 영역의 코드 실행 X
- 자원 접근 X
2) 커널 모드
- 운영체제의 서비스 받을 수 O
- 자원 접근 + 모든 명령어 실행 O
현재 어떤 모드인지 판단하는 Flag 역할을 하는 Supervisor register를 통해서 판단한다.
따라서, 명령어 실행을 CPU가 받고, Flag를 확인한 뒤에 실행 여부를 결정한다.
● 시스템 호출
: 운영체제의 서비스를 받기 위해 커널 모드로 전환하는 것
= 자원에 접근하기 위해 커널 모드로 전환
일종의 Interrupt 이다.
이런 걸 굉장히 많이 할 거임..
운영체제의 핵심 서비스
커널에서 다음 세 가지 기능을 대표적으로 받을 수 있다.
- 프로세스 관리
- 자원 접근 및 할당
- 파일 시스템 관리
프로세스 관리
프로세스 == 실행 중인 프로그램 ( == 메모리에 적재되어 실행되고 있는 프로그램 == 수많은 프로세스들이 동시에 실행됨 )
프로세스가 실행,생성되고
끝나면 삭제된다.
커널은 이렇게 동시다발적으로 생성/실행/삭제되는 다양한 프로세스들을 관리하는 역할을 한다.
(이 관리하는 법을 우리가 배울 예정)
- 프로세스/ 스레드 , 프로세스 동기화, 교착상태 해결
자원 접근 및 할당
- CPU
: CPU 스케줄링을 배운다 .
→ 어떤 프로세스를 먼저 , 얼마나 오래 실행할까?
- 메모리
: 페이징 , 스와핑을 배움
→ 비어있는 메모리 주소에 프로세스를 적재해야하는데
비어있는 건 어떻게 찾을건지 , 혹은 적재는 어떻게 시킬 것인지.
실행해야할 프로젝트 전부 다 메모리에 넣을 건지? 굳이 안 넣고 할 수 있을지
메모리 크기보다 큰 크기의 프로세스일 때
어떻게 할 건지?
- I/O device
파일 시스템 관리
파일 / 폴더에 저장 장치에 보관하는 법을 배운다.
(출처)
유튜브 한빛미디어
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 6. 프로세스 / 스레드 확인 (with Python) (0) | 2024.01.08 |
---|---|
[ 운영체제 ] 5. Thread (0) | 2024.01.05 |
[ 운영체제 ] 4. 프로세스 상태 및 계층구조 (0) | 2024.01.04 |
[ 운영체제 ] 3. 프로세스 개요 (프로세스 메모리 영역) (0) | 2024.01.03 |
[ 운영체제 ] 1. 운영체제란? (0) | 2023.12.28 |