2021. 2. 19. 11:34ㆍComputer(인강)/운영체제
이 포스팅은 fastcampus의 '컴퓨터 공학 전공자 따라잡기 온라인 완주반' 강의를 참고하여 작성하였습니다.
안녕하세요! 반나비 입니다
저번 시간에 시스템 콜에 대해서 말씀드렸는데 이해가 가셨나요?
아직 이해가 가지 않아도 괜찮습니다. 저와함께 이번 포스팅에서 한번 더 깊이 다뤄보면서 이해해보기로 해요!
그럼 시작~~~^ㅅ^
CPU Protection Rings를 먼저 알아야합니다.
CPU도 사실 권한 모드라는 것을 가지고 있습니다.
사용자 모드 (user mode by applications)
커널모드 (kernel mode by OS) : 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케 하는 모드
kernel이란? - OS kernel
1. (견과류, 씨앗의)알맹이
2. (사상, 주제의)핵심
shell이란?
1. (달걀견과류 등의 딱딱한) 껍데기
2. 고둥 껍데기 모양의 것
즉, OS는 사실 커널이고,
커널을 둘러싸고 있는 프로그램을 쉘이라고 합니다.
CPU Protection Rings의 두가지 모드가 중요(level을 ring이라고 보기)
가운데 OS서비스는 일단 무시하구
1. 커널 모드 : OS(운영체제)가 사용
2. 사용자 모드 : 응용 프로그램이 사용
어떤 명령을 실행할때마다, CPU가 아무거나 실행하는게 아니라,
현재 실행하고 있는 모드를 확인해서,
이 모드가 사용자 모드에서 특권 명령어를 실행하려고 하면 CPU가 실행을 안한다.
그러면 특권 명령어 즉, 특정 자원에 접근하는 명령어는 누가 쓰느냐?
커널 모드가 사용하는것이 핵심이다!!
위에서 실행하는것은
사용자모드에서 CPU를 실행하는 샘이 되는것.
그러다가 운영프로그램이 os에 뭔가 요청을 할때
api를 통해서 시스템콜을 호출할것이고
그 명령은 실제로 os로 들어가서
커널모드에서 실행된다.
시스템콜은 커널모드로 실행!!
시스템콜이 실행된다는것은 시스템콜을 통과하는순간 그 명령은 커널모드에서 실행이 된다.
운영체제라는 특권 권한을 가지고 CPU에 실행한다.
- 커널 모드에서만 실행 가능한 기능들이 있음
- 커널모드로 실행하려면, 반드시 시스템 콜을 사용해야함(거쳐야 함)
- 시스템콜은 운영체제(OS)가 제공
-> 시스템콜이 뭔지 조금은 이해가 되셨나요?
저도 처음 공부 시작할땐 무슨 외계어..? 같이 느껴지기도 했지만
자꾸 반복해서 읽다보니 조금은 가닥이 잡히는것 같기도 하네요ㅎㅎ..
한번 정리해볼까요?
"응용프로그램이 (실행 가능한)기능을 쓰려면, 반드시 시스템 콜을 통과하고 커널모드로 변환된 상태의 CPU에서 실행되어야 한다.
응용프로그램이 강제로 CPU에서 명령을 실행 시키려고 할 지라도 이때는 사용자 모드이기 때문에 실행이 안된다.
반드시 시스템콜을 사용해야한다. 그리고 이러한 기능들이 잘 구현되도록 OS에서 시스템콜을 잘 구현해주어야한다"
요것이 핵심~이라고 볼 수 있겠습니다.^ㅅ^
- 사용자 모드와 커널모드를 이용할때 그 백단의 cpu protection ring원리를 이해해야한다.
- 함부로 응용 프로그램이 전체 컴퓨터 시스템을 해치지 못함
- [사용자모드] 주민등록등본은 동사무소 또는 민원 24시(정부 사이트)에서 특별한 신청서(시스템 콜)를 써야만 발급됨. 특정 절차를 거침
- [커널모드] 동사무소 직원분들이 특별한 권한을 가지고, 주민등록등본 출력 명령을 실행하는 셈.
쉬었다 가기.
응용프로그래머 : 운영체제 쪽에서 만들어준 api를 가지고 응용 프로그램을 만든다
시스템프로그래머 : 운영체제 + shell + api + system call + 하드웨어에 대한 이해
1. 운영체제(OS)는 시스템 콜을 제공한다
2. 프로그래밍 언어별로 운영체제 기능을 활용하기 위해, 시스템 콜을 기반으로 API를 제공
3. 응용프로그램은 운영체제 기능 필요시, 해당 api를 사용해서 프로그램을 작성
4. 응용프로그램이 실행되서, 해당 운영체제 기능이 필요한 api를 호출하면 시스템콜이 호출되서, 커널모드로 변경되어 os내부에서 해당명령이 실행되고, 다시 응용프로그램으로 돌아간다.
'Computer(인강) > 운영체제' 카테고리의 다른 글
스케쥴링 알고리즘 기본2 (0) | 2021.02.20 |
---|---|
스케쥴링 알고리즘 기본1 (0) | 2021.02.20 |
스케쥴링 - 멀티 프로그래밍 (0) | 2021.02.19 |
스케쥴링 - 배치 처리, 멀티 태스킹, 멀티프로세싱 상세 (0) | 2021.02.19 |
운영체제구조 - 시스템 콜 (8) | 2021.02.18 |