커널은 운영체제에서 핵심 기능을 담당하는 한 부분이다.
- 핵심 기능
- 자원에 접근, 조작하는 기능
- 프로그램이 올바르게 그리고 안전하게 실행되게 하는 기능
- 보통의 운영체제라 함은 커널을 일컫는 경우가 많다.
- 운영체제에는 속하지만 커널에는 속하지 않는 기능? UI(User Interface) → 사용자와 컴퓨터 간의 연결 통로일 뿐
- 운영체제는 응용 프로그램들이 하드웨어 자원에 접근할 때, 자신을 통해서만 접근할 수 있도록 함으로써 자원을 보호한다.
- 운영체제는 이렇게 문지기 역할을 하는데
이중 모드
로 이를 구현한다.
- 운영체제는 이렇게 문지기 역할을 하는데
이중 모드(Dual Mode)
CPU가 명령어를 실행하는 모드를
사용자 모드
와커널 모드
로 구분하는 방식
사용자 모드(User Mode)
운영체제 서비스를 제공받을 수 없는 모드로
커널 영역의 코드를 실행할 수 없고 자원의 접근이 불가하다.
- 플래그 레지스터에서
슈퍼바이저 플래그
를 통해 사용자 모드(0)인지 커널 모드(1)인지 파악한다.
커널 모드(Kernel Mode)
운영체제의 서비스를 제공받을 수 있는 모드로 자원 접근을 비롯한 모든 명령어를 실행할 수 있다.
시스템 호출(System Call)
커널 모드
로 전환하여 실행하기 위해서 호출하는 것으로 일종의 소프트웨어 인터럽트이다.
- 시스템 호출을 받게 되면 사용자 모드에서 커널 모드로 전환되어 운영체제의 서비스를 받을 수 있게 된다.
- 응용 프로그램은 시스템 호출을 발생시킨 후 커널 모드에서 CPU를 얻어 작업을 진행하다가 할당된 시간이 끝나거나 다른 인터럽트가 들어오면 사용자 모드로 다시 전환하여 순서를 기다리는 작업을 반복하면서 프로그램을 실행한다.
- 리눅스의 호출 시스템
운영체제의 핵심 서비스
우리가 실행하는 프로그램들은 운영체제(커널)로부터 아래와 같은 핵심 기능의 도움을 받으면서 실행된다.
프로세스 관리
동시다발적으로 생성/실행/삭제되는 프로세스들을 효율적으로 관리한다.
- 프로세스 : 메모리에 적재되어 현재 실행 중인 프로그램
- 컴퓨터를 사용하는 동안 많은 프로세스들이 메모리에서 생성/삭제되는데 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있다.
→ 수 많은 프로세스들이 CPU를 번갈아가며 실행하는데 이를 관리한다. - 여러 프로세스가 동시에 실행되는 환경에서 프로세스의 동기화를 하고
- 프로세스가 더 이상 실행되지 못하는 상태인 교착상태 해결한다.
자원의 접근 및 할당
운영체제는 프로세스들이 실행에 필요한 자원에 접근하고 조작함으로써 필요한 자원을 할당해준다.
CPU
- 위에서 말했듯이 하나의 CPU는 하나의 프로세스만 실행할 수 있다. 따라서 한 프로세스가 CPU를 사용하고 있다면 다른 프로세스는 끝날때까지 기다려야 한다.
→ 어떤 프로세스가 얼마나 오래동안 그리고 누가 먼저 CPU를 사용할지를 효율적으로 관리하는 것을 CPU 스케줄링이라고 한다.
메모리
- 운영체제는 새로운 프로세스가 실행될 때, 즉 메모리에 적재될 때 어느 주소에 적재할지를 결정해야 한다.
- 메모리에 적재해야 하는데 남은 공간이 부족할 수도 있고 공간이 있지만 프로세스를 적재하지 못할 수도 있다.
-> 이러한 메모리 관리를 페이징이라고 한다.
입출력장치
- 인터럽트 서비스 루틴을 제공한다.
- 입출력장치가 CPU에 하드웨어 인터럽트를 발생시키면 CPU는 하던 작업을 백업하고 커널 영역에 있는 인터럽트 서비스 루틴을 실행한다.
파일 시스템 관리
- 운영체제는 우리가 사용하는 파일 읽기, 쓰기, 삭제 등과 디렉토리 등의 파일 시스템을 관리한다.
'컴퓨터 구조와 운영체제 > 운영체제' 카테고리의 다른 글
[운영체제] 운영체제(Operating System)란 (0) | 2023.06.21 |
---|