운영 체제는 자원을 관리하고 할당하는 특별한 프로그램이다.
운영 체제
모든 프로그램은 메모리(RAM)에 적재되어 있어야 실행된다.
운영체제는 너무 특별하기 때문에 메모리 내 운영체제가 적재되는 영역이 따로 있다. 여기를 커널 영역이라고 부른다.
커널 영역이 아닌곳은 사용자 영역(user space)라고 불린다.
운영 체제는 사용자 영역에 있는 많은 프로그램들에게 다양한 일을 해준다.
- 메모리 할당, 반환
- CPU 할당, 반환
- 디스크 할당, 반환
운영 체제의 핵심부, 커널(kernel)
운영체제를 이루고 있는 소스코드는 굉장히 방대한데 그중에서 운영체제가 제공해 주는 핵심 서비스를 제공해 주는 운영체제의 한 부분을 커널이라고 부른다.
스마트폰도 종류가 다양한데 결국 핵심적인 기능은 전화, 문자, 와이파이 등등 인것처럼 운영체제도 마찬가지다. 운영체제도 다양한 모습이 있는데 결국 제공해줘야 하는 기능은 거의 비슷하다. 그 운영체제의 핵심 부분을 커널이라고 부른다.
사실 운영체제 == 커널 이라고 봐도 무방하다.
운영체제에서 커널이 아닌 것도 있나요? 에서 아닌 것 중에서 대표적인 건 사용자 인터페이스가 있다.
화면을 터치해서 죽 끌면 왼쪽으로 넘어간다, 클릭, 더블클릭 등등은 엄밀히 말하면 커널이 제공해 주는 기능은 아니다.
운영체제의 역할
모든 응용 프로그램은 하드웨어에 직접적으로 접근할 수 있을까?
사실 응용 프로그램(사용자 프로그램)은 하드웨어의 자원에 임의로 접근을 못한다. 무조건 운영체제를 거쳐서 하드 디스크에 접근해야 한다.
이중 모드
- 커널 모드: 운영체제 서비스를 제공받을 수 있는 모드 (입출력 가능)
- 사용자 모드: 운영체제 서비스를 제공받을 수 없는 모드 (입출력 불가능)
좀 더 쉽게 풀어보자면,
- 커널 모드: 커널 영역의 코드를 실행할 수 있는 모드
- 사용자 모드: 커널 영역의 코드를 실행할 수 없는 모드
시스템 콜
응용 프로그램은 직접 하드웨어에 접근을 못하기 때문에 운영체제에 도움을 받아서 커널모드로 전환이 되어서 실행되어야 한다. 이걸 시스템 콜이라고 부른다.
시스템 콜은 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 것이라고 이해하면 된다.
시스템 콜은 일종의 소프트웨어 인터럽트라고 불리기도 한다.
👇 인터럽트 관련 내용은 다음 링크에서 살펴볼 수 있다.👇
응용프로그램이 시스템 콜을 하면 하던 일을 잠시 멈추고 어딘가에 백업하고 운영체제의 코드로 점프해서 운영체제 코드를 실행하고 다시 복귀해서 응용 프로그램의 일을 다시 진행한다.
그래서 운영체제는 자원에 접근하기 위한 인터페이스를 제공해 주는 특별한 프로그램이라고 볼 수도 있다.
그럼 위에서 말한 운영체제 서비스에는 뭐가 있을까?
운영체제 핵심 서비스
- 프로세스 관리
- 자원 관리 접근 및 할당
- 파일 시스템 관리
'Upstage AI Lab 4기 > 컴퓨터 공학' 카테고리의 다른 글
[운영 체제] 동기화 해결 방법 (2) - 조건 변수와 모니터 (0) | 2024.07.25 |
---|---|
[운영 체제] 동기화 해결 방법 (1) - 뮤텍스 락과 세마포 (0) | 2024.07.25 |
[컴퓨터 구조] 논리 주소와 물리 주소 (0) | 2024.07.25 |
[컴퓨터 구조] CPU 성능 (1) | 2024.07.24 |
[컴퓨터 구조] 명령어 사이클과 인터럽트 (0) | 2024.07.17 |