Chapter 09 운영체제 시작하기
1. 운영체제를 알아야 하는 이유
운영체제/ 문제 해결
운영체제(Operating System)
프로그램 실행에 필요한 요소: 시스템 자원 = 자원
ex. CPU, 메모리, 보조기억장치, 입출력장치 등 컴퓨터 부품
=> 모든 프로그램은 실행되기 위해 반드시 자원 필요
운영체제
- 실행할 프로그램에 필요한 자원 할당, 프로그램 올바르게 실행되도록 돕는 프로그램(: 메모리에 적재되어야 함)
- 컴퓨터가 부팅될 때 메모리 내 커널 영역(kernel space)에 따로 적재
- 지속적으로 메모리 자원 관리: 실행할 프로그램 -> 메모리에 적재/ 실행되지 X 프로그램 -> 메모리에서 삭제
- 공정하게 여러 프로그램에 CPU 자원 할당
- 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 접근하는 것 방지 -> 자원 보호
사용자 영역(user space): 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 *응용 프로그램이 적재되는 영역
=> 운영체제) 커널 영역에 적재 -> 사용자 영역에 적재된 프로그램들에 자원 할당, 올바르게 실행되도록 도움
*응용 프로그램(application software)
- 사용자가 특정 목적을 위해 사용하는 일반적인 프로그램
- ex. 워드 프로세서, 인터넷 브라우저, 메모장, 게임 등
운영체제- 정부
응용 프로그램에 자원 효율적으로 배분 - 국내 자원(땅, 인력, 돈 등) 효율적으로 배분
실행할 프로그램들이 지켜야 할 규칙 만들어 컴퓨터 시스템 관리 - 국민들이 규칙 만들어 나라 전체 관리
CPU 관리, 프로세스 관리, 파일시스템 관리, 메모리 관리... - 기획재정부, 과학기술정보통신부, 외교부...
운영체제가 없다면 하드웨어 조작하는 코드 -> 개발자가 직접 작성
ex. 프로그램을 메모리에 적재하는 코드, CPU가 1과 2를 더하게 하는 코드, 모니터에 계산 결과 출력하는 코드
2. 운영체제의 큰 그림
커널/ 이중 모드/ 시스템 호출/ 운영체제 서비스
커널(kernel)
- 운영체제의 핵심 서비스를 담당하는 부분
- ex. 사람의 심장, 자동차의 엔진
사용자 인터페이스(UI; User Interface)
- 사용자가 컴퓨터와 상호작용할 수 있는 통로
- 그래픽 유저 인터페이스(GUI; Graphical User Interface): 그래픽 기반
- 커맨드 라인 인터페이스(CLI; Command Line Interface): 명령어 기반
- 운영체제가 제공하는 서비스 O But, 커널에 포함 X
- ex. 윈도우 바탕화면
이중 모드와 시스템 호출
운영체제에 도움을 요청한다 = 운영체제 코드를 실행하려고 한다
응용 프로그램의 요청 -> 운영체제) 응용 프로그램 대신 자원에 접근하여 요청한 작업 수행
ex. 응용 프로그램이 하드 디스크에 접근하여 데이터 저장-> 운영체제에 도움 요청
-> 운영체제) 커널 영역 내의 하드 디스크에 데이터를 저장하는 코드 실행(응용 프로그램 작업 대신 수행)
=> 운영체제 문지기 역할
이중 모드(dual mode): CPU가 명령어를 실행하는 모드 구분
- 사용자 모드(user mode)
- 운영체제 서비스 제공받을 수 X 실행 모드
- 커널 영역의 코드 실행할 수 X 모드
- CPU) 사용자 모드로 명령어 실행 -> 하드웨어 자원에 접근하는 명령어(ex. 입출력 명령어) 실행 X
-> 일반적인 응용 프로그램은 자원에 접근 X
- 커널 모드(kernel mode)
- 운영체제 서비스 제공받을 수 O 실행 모드
- 커널 영역의 코드 실행할 수 O 모드
- CPU) 커널 모드로 명령어 실행 -> 자원에 접근하는 명령어 비롯한 모든 명령어 실행 O
-> 운영체제는 커널 모드로 실행 => 자원에 접근 O
사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스 제공받으려면
운영체제에 요청 보내 커널 모드로 전환되어야 함
시스템 호출(system call) = 시스템 콜
- 운영체제 서비스를 제공받기 위한 요청
- 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 방법
- 소프트웨어 인터럽트
- 입출력장치에 의해, 특정 명령어에 의해 발생
CPU가 시스템 호출을 처리하는 순서 ~= 인터럽트 처리 순서(04장)
시스템 호출 발생시키는 명령어 실행
-> CPU) 작업 백업, 커널 영역 내 시스템 호출 수행하는 코드(인터럽트 서비스 루틴) 실행
-> 기존에 실행하던 응용 프로그램으로 복귀하여 실행 계속함
시스템 호출의 작동 예
응용 프로그램 -> 하드 디스크에 데이터 저장
=> 응용 프로그램이 하드 디스크에 접근해야 함
But, 사용자 모드로 실행되는 동안 자원(하드 디스크)에 접근 X
-> 커널 모드로 전환
1. 하드 디스크에 데이터 저장하는 시스템 호출 발생 -> 커널 모드로 전환
2. 운영체제 내 '하드 디스크에 데이터를 저장하는 코드' 실행 -> 하드 디스크에 접근
3. 사용자 모드로 복귀해 실행 계속함
운영체제의 핵심 서비스
- 프로세스 관리
- 프로세스(process): 실행 중인 프로그램
- 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있음
-> 프로세스들 번갈아 가며 실행 - 각 프로세스 상태, 사용하고자 하는 자원 다름
- 여러 프로세스 동시에 실행되는 환경 -> (필수) 프로세스 동기화, 교착 상태 해결
- 자원 접근 및 할당
- CPU
- 메모리 - 여러 프로세스 저장/ CPU - 한 번에 하나의 프로세스만 실행
-> 하나의 프로세스가 CPU 이용 중 -> 다른 프로세스 기다려야 함 - CPU 스케줄링: 운영체제) 프로세스에 공정하게 CPU 할당 -> 어떤 프로세스, 얼마나 오래 이용할지 결정
- 메모리 - 여러 프로세스 저장/ CPU - 한 번에 하나의 프로세스만 실행
- 메모리
- 적재된 프로세스 크기, 주소 다름(같은 프로세스여도 실행할 때마다 달라질 수 있음)
-> 새로운 프로세스 적재 시 어느 주소에 적재할지 결정
- 적재된 프로세스 크기, 주소 다름(같은 프로세스여도 실행할 때마다 달라질 수 있음)
- 입출력장치
- 인터럽트 서비스 루틴: 인터럽트 처리하는 프로그램 -> 입출력작업 수행
- 하드웨어 인터럽트(입출력 장치가 발생)
- 입출력장치) 하드웨어 인터럽트 요청 신호 -> CPU
CPU) 하던 일 백업, 커널 영역에 있는 인터럽트 서비스 루틴 실행
- 입출력장치) 하드웨어 인터럽트 요청 신호 -> CPU
- CPU
- 파일 시스템 관리
- 파일 열고, 생성하고, 삭제 -> 묶어 디렉터리(폴더)로 관리
출처
'Computer Science > 컴퓨터구조 | 운영체제' 카테고리의 다른 글
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 11 CPU 스케줄링 (1) | 2024.07.09 |
---|---|
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 10 프로세스와 스레드 (0) | 2024.07.09 |
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 08 입출력장치 (0) | 2024.01.08 |
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 07 보조기억장치 (0) | 2024.01.08 |
[혼자 공부하는 컴퓨터구조+운영체제] Chapter 06 메모리와 캐시 메모리 (0) | 2024.01.08 |