운영체제

[OS] OS와 HW의 관계, 유저모드/커널모드

pobii 2025. 3. 23. 15:09

Overview


OS에서 바라본 OS와 HW

- 운영체제는 System Call, Kernel, Driver 라는 소프트웨어 프로그램으로 이루어져 있다.

- System Call : 프로그램이 커널에 요청을 보내어 하드웨어에 접근하게 해주는 저수준 인터페이스

- Kernel : 하드웨어와 소프트웨어 간의 중개역할을 함. 하드웨어 관리, 프로세스 관리, 파일 시스템 관리, 네트워크 통신 등의 작업 처리

- Driver : I/O 버스와 통신하는 소프트웨어. kernel이 하드웨어를 사용할 수 있도록 도움

- User mode : 일반 프로그램 실행하는 모드로, 하드웨어에 직접 접근할 수 없으며, 시스템 콜을 통해서만 접근할 수 있다.

- Kernel mode : 운영체제가 실행되는 모드로, 모든 하드웨어에 직접 접근할 수 있다. 


* 파일 빌드~실행까지 과정에서 User mode와 Kernel mode

아래 글에서 파일 빌드~실행까지의 과정을 살펴봤다. 이 과정에서 유저모드 영역과 커널모드 영역은 어떻게 구분되는지 다시 그려보면 아래그림과 같다.

 

[OS].c 파일 빌드~실행 전체적인 과정

Overview.c 파일 빌드 과정- Compiler, Assembler, Linker 순으로 진행된다.1. Compiler.c 파일을 어셈블리어로 바꾼다.2. Assembler어셈블리어 코드를 바이너리 코드로 변환한다.변수, 함수의 주소를 할당한다.3. L

annyeong46.tistory.com


HW 관점에서 바라본 OS와 HW

- 모든 구성요소(CPU, 하드디스크, 메인메모리, 모니터 등등)는 입출력 버스(I/O BUS)를 통해 서로 통신한다.

- I/O BUS : 하드웨어 장치들간의 데이터 전송을 위한 물리적인 통로

 


 

scanf("%s", data) 실행 과정

1. 사용자가 키보드 "a"를 누른다.

2. "a"가 Kernel 영역의 buffer에 저장된다. buffer 공간은 OS 부팅시 자동으로 할당된다.

 

3. 프로그램에서 명령어 "scanf()"을 호출한다

4. "scanf()"는 System Call 의 read() 함수를 호출하는데, 이로 인해 User mode에서 Kernel mode로 변경된다

5. 메모리 Kernel 영역의 buffer에 있는 "a"를 해당 프로그램에 할당된 data변수 메모리에 넣는다

    (data 변수가 동적 메모리 할당한 경우 Heap 영역에 넣는다)

6. Kernel mode에서 User mode로 변경된다

7. 프로그램이 "a" 데이터를 사용한다