<2025.3.13.목요일 수업>
📍1. 컴퓨터 시스템의 계층 구조
1-1. 컴퓨터 시스템이 계층 구조로 설계된 이유 (필요성)
✔️계층 간의 독립성 확보를 위해 ➡️ 추상화
✔️사용자
- OS나 하드웨어에 대한 지식이 없어도 응용 프로그램으로 컴퓨터 활용 가능
✔️응용 프로그램 개발자 또는 응용 프로그램
- 장치의 타입이나 구조, 제어 방법을 몰라도 개발 가능, 그러나 OS를 알아야 함
- e.g.) CPU 유형, 메모리 크기를 몰라도 프로그램 작성 가능, 저장 장치가 하드디스크인지 SSD인지, 저장 장치의 크기는 얼마인지, 디스크 헤드는 몇개 있는지 몰라도 파일 입출력 프로그램 작성 가능 ➡️ OS에게 요청하여 해결
- 컴퓨터 하드웨어가 바뀌어도 응용프로그램을 다시 작성할 필요 없음
✔️운영체제
- 운영체제는 장치와 관련된 모든 작업을 디바이스 드라이버에게 요청
- 응용프로그램과 하드웨어 사이의 인터페이스 역할
1-2. 사용자에 대한 운영체제의 역할
1️⃣ 사용자가 하드웨어에 관한 지식이 없어도 컴퓨터를 다루기 용이하게 함
✔️ 하드웨어를 설치하거나 변경하는 것에 도움
e.g.) 파일 탐색기
2️⃣ 사용자에게 컴퓨터 시스템을 사용할 편리한 인터페이스 제공
e.g.) UI, 마우스, 음성 등
3️⃣ 컴퓨터의 사용을 돕는 여러 도구 응용프로그램(유틸리티) 제공
e.g.) Windows의 파일 탐색기와 작업 관리자, 리눅스의 쉘(shell)
4️⃣사용자 계정 관리
5️⃣사용자의 컴퓨터 사용 시간 계산, accounting 등
1-3. 응용프로그램에 대한 운영체제의 역할
1️⃣응용프로그램이 직접 하드웨어를 다루지 못하도록 차단
✔️ 운영체제가 하드웨어를 완벽히 독점 장악
✔️ 이유: 응용프로그램들 간의 하드웨어 사용 충돌을 막기 위함
2️⃣ 응용프로그램이 하드웨어를 사용하고자 할 때
✔️ 반드시 운영체제에게 요청 ➡️ 운영체제가 대신하여 하드웨어 조작
☑️ 유일한 요청 방법: 시스템 호출(system call)
✔️ 응용프로그램과 하드웨어 사이의 인터페이스 ➡️ 하드웨어 추상화
3️⃣ 응용프로그램들의 수행 순서 제어 (스케줄링)
4️⃣ 응용프로그램들 사이의 통신 중계
1-4. 하드웨어에 대한 운영체제의 역할
✔️하드웨어 자원 사용에 대한 충돌 해결 및 성능 최적화
✔️하드웨어 자원 접근
📍2. 커널
2-1. 운영체제 소프트웨어 구성
1️⃣ 유틸리티/GUI 소프트웨어
2️⃣ 라이브러리
3️⃣ 커널
4️⃣ 디바이스 드라이버
2-2. 유틸리티 소프트웨어
✔️ 사용자가 컴퓨터를 편리하게 사용 또는 관리할 수 있도록 설계된 프로그램
e.g.) 쉘(GUI, CLI), 탐색기, 명령창, 작업 관리자, 제어판, 디스크 조각 모음 등
2-3. 라이브러리 소프트웨어
✔️ 특정한 부분 기능만을 수행하도록 미리 작성되어진 프로그램 모음
✔️ 표준 라이브러리(standard library)
응용프로그램에서 자주 활용되는 기능으로, 커널의 기능과 일차적으로 무관한 작업을 수행하는 프로그램 모음
; 시스템 호출 함수를 래핑(wrapping)함
; ANCI C library(NASI libc), C POSIX library(POSIC libc), GNU C library C(glibc)
✔️ 시스템 호출 라이브러리(system call library): 응용프로그램이 커널 코드(하드웨어 기능)를 불러 활용할 수 있도록 제공하는 프로그램 모음
2-4. 커널
✔️ 운영체제의 핵심 기능을 구현한 부분, 좁은 의미의 운영체제
✔️ 부팅 후 메모리에 상주하는 코드와 데이터
✔️ CPU, 메모리 등 컴퓨터 자원을 직접 제어하고 관리하는 코드와 자료 구조들
✔️ 커널 코드는 함수들의 집합
✔️ 커널 기능을 이용하려면 응용프로그램은 반드시 시스템 호출(system call) 사용
2-5. 디바이스 드라이버
✔️ 장치를 직접 제어하고 입출력하는 프로그램
✔️ 장치마다 전담 디바이스 드라이버가 있음
✔️ 일반적으로 장치 제작자에 의해 작성되어 배포됨
✔️ 키보드 드라이버, 디스크 드라이버, SCSI 드라이버, 마우스 드라이버, 그래픽 드라이버, 네트워크 드라이버, USB 드라이버 등
📍3. 커널 인터페이스
3-1. 커널이 제공하는 2개 인터페이스(접점)
1️⃣ 시스템 호출(system call)
커널과 응용프로그램 사이의 중계 역할 (커널을 보호하기 위해)
2️⃣ 인터럽트(interrupt)
커널과 하드웨어 사이의 중계 역할
3-2. 시스템 호출(system call)
✔️ 커널과 응용프로그램 사이의 인터페이스
✔️ 응용프로그램에서 커널 기능을 사용할 수 있는 유일한 방법
✔️ 시스템 호출 라이브러리를 통해 다양한 시스템 호출 함수 제공
e.g.) read() 함수에 의해 시스템 호출이 일어나는 과정
3-3. 인터럽트(interrupt)
✔️ 커널과 하드웨어 장치 사이의 인터페이스
✔️ 장치들이 입출력 완료, 타이머 완료 등을 CPU에게 알리는 하드웨어적 방법
- 인터럽트를 알리는 하드웨어 신호가 직접 CPU에 전달
✔️ 인터럽트가 발생하면
- CPU는 하는 일을 중단하고 인터럽트 서비스 루틴(ISR) 수행
- 인터럽트 서비스 루틴은 대부분 디바이스 드라이버 내에 있음
- 인터럽트 서비스 루틴은 커널 영역에 적재
- 인터럽트 서비스 루틴의 수행을 마치면 하던 작업 계속
✔️ 인터럽트 활용
운영체제가 장치에게 지시한 입출력 작업의 완료, 예고 없는 네트워크 데이터의 도착, 키보드나 마우스의 입력, 부족한 배터리 경고 등 장치와 관련된 모든 이벤트 처리
'운영체제' 카테고리의 다른 글
[운영체제] 2. 컴퓨터 시스템과 운영체제 - (4) 커널과 인터럽트 (0) | 2025.04.09 |
---|---|
[운영체제] 2. 컴퓨터 시스템과 운영체제 - (3) 커널과 시스템 호출 (0) | 2025.04.09 |
[운영체제] 2. 컴퓨터 시스템과 운영체제 - (1) 컴퓨터 시스템과 하드웨어 (0) | 2025.04.09 |
[운영체제] 1. 운영체제 개요 - (2) 운영체제 유형, (3) 운영체제 구조 (1) | 2025.04.09 |
[운영체제] 1. 운영체제 개요 - (1) 운영체제 개념 (0) | 2025.04.09 |