하루에 하나씩
[03] 운영 체제 본문
운영체제
시스템 자원
- 모든 프로그램은 하드웨어를 필요로 함
- 이 때, 프로그램 실행에 필요한 요소들을 시스템 자원 또는 자원이라고 함
운영체제
- 실행할 프로그램에 필요한 자원을 할당
- 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
사용자 영역과 커널 영역
- 커널영역
- 컴퓨터 부팅시 메모리 내 생성되는 공간, 운영체제가 적재되어 실행
- 사용자 영역
- 커널 영역을 제외한 나머지 영역
- 사용자가 이용하는 응용 프로그램이 적재
응용 프로그램
- 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램
운영체제의 역할
- 프로그램을 메모리에 적재
- 실행되지 않는 프로그램을 메모리에서 삭제
- 위와 같은 과정으로 지속적으로 메모리 관리
- 예시
- 정부가 국가를 관리하기 위해, 관리 부서를 여러개로 나누어 나라의 자원을 관리한다.
- 이와 마찬가지로, 운영체제는 CPU, 프로세스 및 파일시스템 등의 관리를 통해 컴퓨터의 자원을 관리한다.운영 체제를 알아야 하는 이유
- 운영체제가 존재하지 않으면, 하드웨어 조작 코드를 개발자가 모두 직접 작성해야함.
- 운영체제는 프로그램이 하드웨어 상에서 어떻게 작동하는지 자세히 알고 있음
- 이를 우리에게 상세하게 알려줄 수 있으며, 이에 따라 문제해결의 실마리를 찾을 수 있음
- 우리가 컴퓨터를 사용하다가 뜨는 에러메세지나, 하드웨어 실행 실패시 나타나는 오류에 대한 메세지 등...
운영체제의 큰 그림
- 커널에 대해 알기
- 프로그램이 운영체제로 부터 어떤 도움을 받으며 실행되는지 알기(이중 모드, 시스템 호출)
커널 영역
- 운영체제의 심장
- 자원에 접근하고 조작하는 기능, 프로그램이 올바르게 실행할 수 있도록 하는 기능이 포함
- 커널에 따라 프로그램이 하드웨어를 이용하는 양상과 전체의 성능을 좌지우지함
- 운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스도 있음
- 사용자 인터페이스
- 윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용 가능한 곳
사용자 인터페이스
- 그래픽 유저 인터페이스(GUI)
- 그래픽을 기반으로 컴퓨터와 상호작용
- 바탕화면 생각하면 됨
- 커맨드 라인 인터페이스(CLI)
- 명령어 기반 컴퓨터와 상호작용
- CMD 같은거 생각하면 됨
이중모드와 시스템 호출
- 운영체제는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 차단, 자원 보호
- 운영체제에 도움을 요청한다 == 운영체제 코드를 실행하려고 한다
이중 모드
- CPU가 명령어를 실행하는 모드를 크게 커널과 사용자 모드로 구분하는 것
- CPU 명령에 따라 사용자, 커널 모드가 결정
사용자 모드
- 운영체제 서비스를 제공 받을 수 없는 실행 모드
- 커널 영역의 코드를 실행할 수 없음
- 일반적인 응용프로그램 실행 방식
- 하드웨어 접근하는 명령어를 실행할 수 없음
커널 모드
- 운영체제 서비스를 제공받을 수 있는 실행 모드
- 커널 영역의 코드를 실행 가능
- 자원 접근 가능
시스템 호출
- 운영체제 서비스를 제공 받기 위한 요청
- 사용자 모드에서, 시스템 호출을 통해 커널 모드로 전환 가능
- 일종의 소프트웨어적 인터럽트로 입출력장치가 아닌 특정 명령어에 의해 발생
시스템 호출 루틴
- 시스템 호출을 발생, 커널모드로 전환 이 때, CPU는 작업하던 데이터를 백업하고, 코드 수행
- 운영체제 내의 하드디스크에 데이터를 저장
- 실행이 끝나면, 다시 사용자 모드로 복귀
운영체제의 핵심 서비스
프로세스
- 실행 중인 프로그램
- CPU는 일반적으로 한 번에 하나의 프로세스만 실행 가능
- 조금씩 번갈아가면서 수행
자원 접근 및 할당
모든 프로세스는 실행을 위해 자원을 필요로 함
운영체제가 자원에 접근하여 프로세스에 필요한 자원 할당
CPU
- 프로세스들을 공정하게 작업할 수 있도록 CPU 할당을 조절
- 이를 CPU 스케줄링이라 함
메모리
- 메모리에 적재된 프로세스들을 적절하게 적재할 수 있도록 관리
입출력 장치
- 인터럽스 서비스 루틴
파일 시스템 관리
- 인터럽스 서비스 루틴
파일을 생성, 삭제하고 관련 파일들을 디렉터리에 묶어 보관
- 이를 파일 시스템 이라 한다.
'컴퓨터 구조' 카테고리의 다른 글
[06] 동기화 (0) | 2024.04.17 |
---|---|
[05] CPU 스케줄링 (1) | 2024.04.17 |
[04] 운영체제 - 프로세스와 스레드 (0) | 2024.03.27 |
[02] 입출력 장치 (0) | 2024.03.20 |
[01] 보조기억장치 (1) | 2024.03.13 |