개발자가 운영체제를 알아야 하는 이유
개발자들이 만든 프로그램은 하드웨어가 실행하고, 그 하드웨어를 조작하는 프로그램이 운영체제입니다. 운영체제는 현재 하드웨어의 상태, 코드의 실행 상황, 하드웨어 상에서의 오류 등을 우리에게 상세히 알려줄 수 있다. 이를 통해 하드웨어와 프로그램을 더 깊이 이해하고 문제 해결의 실마리를 찾을 수 있다.
운영체제란
프로그램 실행에 필요한 요소들( CPU, 메모리, 보조기억장치, 입출력장치 등 )을 가리켜 시스템 자원, 혹은 줄여서 자원이라고 합니다.
모든 프로그램은 실행되기 위해 반드시 자원이 필요합니다. 여기서 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 프로그램을 운영체제(Operating System)이라고 합니다.
운영체제는 여느 프로그램과 마찬가지로 메모리에 적재되어야 합니다. 메모리는 사용자 영역과 커널 영역으로 공간이 나누어 집니다.
사용자 영역에는 응용 프로그램 ( 인터넷 브라우저 , 메모장, 게임 )이 적재되어 실행되고, 커널 영역에는 컴퓨터가 부팅될 때 운영체제가 적재되어 실행됩니다.
커널
자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등, 운영체제의 핵심 서비스를 담당하는 부분이다.
사용자 인터페이스( User Interface : UI )
윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용 할 수 있는 통로입니다.
운영체제가 제공하는 UI의 종류에는 그래픽 유저 인터페이스(GUI)와 커맨드 라인 인터페이스(CLI)가 있습니다.
커널에 포함되지 않는 서비스로 같은 커널을 사용하더라도 UI는 다를 수 있습니다.
컴퓨터 시스템 간략 구조도
리눅스 메모리 모델 참조 : https://poplinux.tistory.com/121
운영체제의 기능
이중 모드와 시스템 호출
이중 모드(Dual Mode)
다중 프로그래밍 환경에서 자원에 대한 접근을 사용자 모드(User Mode)와 커널 모드(Kernel Mode)로 분리하여 운영체제를 보호하는 기법입니다. 사용자 모드는 운영체제의 서비스를 제공받을 수 없는 실행 모드입니다. 입출력 명령어 같은 특권 명령(privileged instruction)을 사용할 수 없습니다.
이중 모드 동작 구조
사용자가 사용하는 응용프로그램은 사용자 모드에서 작동됩니다. 해당 프로그램에서 입출력 요청과 같은 운영체제에 시스템 사용을 요청(System Call)하게 되면 커널 모드로 전환되어 요청된 서비스를 제공받을 수 있습니다. 해당 작업이 끝나게 되면 다시 사용자 모드로 전환됩니다.
이중 모드 참조 :
https://choimon.github.io/os/dual-mode/
https://structuring.tistory.com/115
시스템 호출(System Call)
운영체제 서비스를 제공받기 위해 운영 프로그램에서 운영체제에 보내는 요청입니다. 시스템 호출은 특정 명령어에 의해 발생하는 인터럽트로 소프트웨어 인터럽트라고 합니다.
순서
1. 시스템 호출 명령어 실행
CPU
2. 지금까지의 작업 백업
3. 인터럽트 서비스 루틴 실행
4. 실행하던 응용 프로그램으로 복귀
커널의 기능
1. 프로세스 관리
실행 중인 프로그램을 프로세스(process)라고 하며, 다음과 같은 기능을 수행한다.
- 프로세스와 스레드를 스케쥴링한다.
- 프로세스 생성, 제거
- 프로세스 중지 및 재수행
- 프로세스 동기화 방법 제공
- 프로세스 통신 방법 제공
- 교착상태를 방지하는 방법 제공
2. 자원접근 및 할당
- CPU .스케줄링
- 프로세스가 적재될 주소 결정
- 인터럽트 서비스루틴 제공
3. 파일 시스템 관리
- 파일 읽기, 쓰기, 삭제
- 파일들을 디렉터리로 관리
'OS' 카테고리의 다른 글
가상 메모리 (0) | 2024.01.20 |
---|---|
데드락(Deadlock, 교착 상태) (0) | 2024.01.20 |
프로세스 동기화[240222 - Spinlock추가] (2) | 2024.01.14 |
CPU 스케줄링 (2) | 2024.01.14 |
프로세스와 스레드 (0) | 2023.12.15 |