-
[운영체제] 시스템콜과 유저모드, 커널모드IT/운영체제 2024. 8. 26. 14:36
📝컴퓨터 제어 모드
운영체제를 통해 안정적이고, 효율적인 동작을 하기 위해서는 사용자 또는 응용프로그램이 직접 하드웨어에 접근하는 것을 막아야한다. 운영체제 내부에서는 컴퓨터가 CPU를 어떻게 사용하느냐에 따라 2가지 방식으로 컴퓨터를 제어한다. 하나는 CPU의 명령어를 마음대로 설정할 수 없게끔 만들어 놓은 모드가 있다. 이걸 유저모드라고 하며, 또 하나는 CPU를 직접 컨트롤할 수 있는 커널 모드이다.
🔖 유저모드(User Mode)
: 사용자와 데이터를 왔다갔다 할 수 있는 등의 작업을 한다. 은행원이 데스크에서 고객과 상담하는 것과 비슷하다.
🔖 커널모드(Kermel Mode)
: 운영체제 내부에서 실제로 하드웨어를 제어할 수 있다. 은행원이 뒤에서 작업을 하는 것과 비슷하다.
이렇게 2가지 모드가 있는데, 요청에 따라서 모드가 왔다갔다 한다. 요청은 시스템 콜(System Call)을 통해서 전환이 된다. 예를들어 평소에 운영체제가 유저모드라면, 사용자가 입력을 하면 유저모드에서 시스템 콜이 호출되면서 커널모드로 바뀌어서 내부에서 들어온 요청을 가지고 해당하는 작업을 하고 다시 유저모드로 돌아오는 컨셉이다.
카카오톡 같은 프로그램을 사용할 때, 여러가지 명령어를 수행하게 된다. 위 그림을 예로들면, Job(카카오톡) 프로그램이 실행되면서 명령을 요청했다.(2번상태) 2번상태로 내려가면, 시스템 콜을 부른다. 그럼 커널모드에서 컴퓨터가 exception handler를 통해 수행을 한다. 그리고 4번 모드로 돌아온다.
그럼 Job1(카카오톡)이 wating 상태가 되고, Job2(다른 프로그램)이 runnging상태가 된다. 예를들어, Job1인 카카오톡이 실행중이었는데, Job2라는 크롬 프로그램이 뭔가를 하려고 기다리고 있다고 가정해보자. (1번상태) 카카오톡이 작업을 수행하고 있는데, 크롬이 본인도 작업을 해야한다고 시스템 콜 요청을 보냈다. 그것이 getc라고 하는 시스템 콜이다. 시스템 콜이 운영체제로 가면 , Job2가 뭐 하고싶다는데 Job1(카카오톡) 너 잠깐 있어봐 뭐좀 하고 올게 하고 , 3번으로 내려가서 그 작업을 수행한다. 정확하게는 Job2가 일할 수 있는 환경을 만들어준다.
🔖 일할 수 있는 환경이란?
컴퓨터의 메인 메모리 안에 코드와 데이터가 올라와있다. 그걸 접근할 수 있는 건 CPU뿐이다. 그러다보니 CPU가 일을 하려면 어떤 코드, 어떤 데이터를 메인 메모리에서 가져다 쓰느냐를 매번 결정해야하는데, 그걸 운영체제가 커널모드에서 관리를 한다. 유저모드에서 어플리케이션들이 작업을 하고 싶다고 요청을 보내면, 운영체제가 커널모드에서 CPU한테 작업을 수행하라고 명령을 한다. 그러면 CPU가 하던 일을 멈추고, Job2가 요청한 걸 수행하게 된다.
🔖그런데, 갑자기 키보드를 누른다면?
사용자가 키보드를 누른다는 건 가장 먼저 처리해야하는 굉장히 중요한 작업이다. 어떤 프로그램이 켜져있는 사용자 입력을 먼저 처리해야한다. 따라서 키보드가 작동되면, 키보드 인터럽트라는 시스템 콜이 호출된다. 키보드를 누르는 순간 유저모드에서 키보드를 담당하는 프로그램이 운영체제한테 키보드 인터럽트를 날려 그때까지 하던 일을 다 멈추고, 키보드에 대한 처리를 하게된다.
🔖 많은 프로그램을 동시에 실행할 수 있는 이유
프로그램이 실행되려면, CPU와 메모리 사이에 작업을 처리하는 소통이 필요하다. 이러한 처리를 하는 프로그램이 운영체제에 올라와있다. 멀리코어 환경에서는 다른 코어에게 다른 시스템 콜을 서로 처리할 수 있다. 즉) 동시에 병렬적으로 처리할 수 있다. 운영체가 멀티코어 환경일 때는 코어마다 시스템 콜이 다르게 호출 가능하다.
📝 시스템 콜의 유형
커널은 쉘 프로그램이 요청할 수 있도록 특정 형태의 통신 인터페이스를 제공하는데, 그것을 우리는 system call혹은 system-call interface라고 한다. 시스템콜은 보통 함수 형태를 갖는다. 시스템콜은 프로그램이 운영체제의 커널에게 서비스를 요청하는 프로그래밍 방식이다. 즉) 프로그램이 운영체제와 상호작용하는 방식이다.
시스템 콜의 유형에는 총 5가지가 있다.
1) Process Control
: 작업, 일이라고 생각하면 된다. 프로세스는 컴퓨터가 일을 하는 단위, 어떤 걸 시작하고, 어떤 걸 멈추고 할지를 정해주는 것이다.
2) File Manager
: 한컴을 통해 문서작업을 하면 다운, 저장, 삭제하는 작업등이 있다.
3) Device Manager
: 컴퓨터에 달려있는 디바이스들.(연결되어 있는 모든 I/O 디바이스) 이걸 운영체제에서 시스템 콜 형태로 관리한다.
4) Information Maintenance
: 컴퓨터가 사용하고 있는 여러가지 정보들, 현재 컴퓨터에서 작동하고 있는 모든 정보, 컴퓨터 시간 등 커뮤터가 나타내는 상태들을 관리할 수 있다.
5) Communications (between computer and computer)
: 주로 네트워크라고 생각하면 된다. 컴퓨터가 다른 컴퓨터랑 소통하는 것. 시스템 콜 역시 소통을 관리한다. 블루투스, 와이파이 등도 커뮤니케이션이며 공유기도 다른 개념의 컴퓨터이다.
[출처]
반응형'IT > 운영체제' 카테고리의 다른 글
[운영체제] 리눅스(Linux)란? (개념, 구성요소, 작동과정) (1) 2024.08.26 [OS] 운영체제란? 역할 및 구조 ( 커널, 시스템콜) (0) 2024.08.26