CPU는 User Application이 시스템을 손상시키는 것을 막기 위해 이중 동작 모드를 제공한다.
이중 동작 모드란, 유저 모드, 커널 모드로 나누어서 동작하는 것을 말한다.
컴퓨터에는 중요한 자원들이 많이 저장되어 있는데, 사용자가 이러한 자원에 함부로 접근할 수 있다면 악의가 없다고 해도 시스템을 망칠 수 있기 때문에 시스템을 보호하기 위해 나누어서 작동하는 것이다.
*️⃣커널(Kernel)이란?
컴퓨터는 하드웨어와 소프트웨어로 나뉘고, 소프트에어는 다시 응용 프로그램과 운영체제로 나뉜다. 운영체제는 또 시스템 프로그램과 커널로 나뉘게 된다.
프로그램이 실행되기 위해서는 컴퓨터 메모리에 해당 프로그램이 올라가 있어야 한다. 하지만 메모리는 한정적이기 때문에 안 쓰는 프로그램까지도 메모리에 올라가 있는 것은 비효율적이다.
따라서 운영체제 중에서 항상 필요한 부분만을 메모리에 올려놓고, 그렇지 않은 부분들은 필요할 때마다 메모리에 올려서 사용한다. 이때 메모리에 상주하는 부분을 kernel이라고 한다.
유저모드(user mode)
유저 모드는 프로그램 자원에 함부로 접근하지 못 하도록 권한을 적게 준 모드다.
여기서 프로세스를 실행하고 코드를 작성한다.
mode bit는 1이다.
커널 모드(kernel mode)
커널 모드는 중요한 자원들에 모두 접근할 수 있는 모드다.
mode bit는 1이다.
프로그램이 실행되는 동안, 프로세스는 이 두 모드를 왔다갔다하며 필요한 작업들을 수행한다.
반드시 커널에 관련된 작업들은 유저모드가 아닌 커널모드로 전환 후 수행되어야 한다.
이때, 사용자 프로그램이 파일 읽기, 디바이스 연결 등의 수행을 필요로 할 때, 운영체제에서 이러한 특권 명령의 대행을 요청하는 데 이것이 시스템 콜이다.
유저 모드와 커널 모드의 전환
과정은 다음과 같다.
1. 프로세스가 유저모드에서 실행되다가 특별한 작업을 해야 한다면 system call을 호출해 커널에 요청을 한다. ( 유저모드에서 커널모드로 전환됨)
2. system call의 인덱스가 가리키는 곳에 이에 대한 처리 과정이 담겨져 있는데 커널은 이를 수행한다.
3. 커널이 해당 작업에 대한 결과값을 담아 리턴해주면 다시 유저모드로 돌아간다. (커널모드에서 다시 유저모드로 전환됨)
'study > CS⚡' 카테고리의 다른 글
[운영체제] 멀티스레드의 동시성(Concurrency)과 병렬성(Parallelism) (1) | 2023.10.15 |
---|