이화여자대학교 반효경 교수님의 운영체제 강의를 참고하였습니다.
운영체제
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 SW와 HW를 연결하는 소프트웨어 계층
- 좁은 의미의 운영체제 (커널) : 운영체제의 핵심 부분, 메모리에 상주
- 넓은 의미의 운영체제 : 커널을 포함하여 각종 주변 시스템 유틸리티를 포함한 개념
# 분류
- 동시 작업 가능 여부 : 단일 작업, 다중 작업
- 사용자 수 : 단일 사용자, 다중 사용자
- 처리 방식 : 일괄 처리, 시분할, 실시간
💡 시분할 (time sharing)
컴퓨터 처리 능력을 일정한 시간 단위로 분할
💡 실시간 (realtime)
Deadline이 존재하여 정해진 시간 내에 반드시 종료되어야 함
⇒ Hard realtime system, Soft realtime system
# 목적
- 편리한 환경 제공
- 자원을 효율적으로 관리 (복잡한 하드웨어 관리) → 판단하는 능력
💡 편리한 환경
하드웨어적인 부분을 알지 못하덜도 프로그램 수행 가능
여러 프로그램을 동시에 각 컴퓨터에서 수행되는 것처럼 느끼게 해줌
💡 자원 : 메모리, CPU, I/O 장치 등
# 기능
- CPU 스케줄링
- 메모리 관리
- 디스크 스케줄링
- 인터럽트, 캐싱 ⇒ CPU, I/O 장치 간 속도차이 해결
💡 캐싱 : 중간단계를 두는 것(똑같은 데이터라면 메모리 어디다 저장하고 그 정보를 주는 것)
💡 인터럽트 : 요청한 디스크의 일이 다끝나서 알림을 cpu에 해주는 것
시스템 콜 & Mode bit
1. 시스템 콜 (System Call)
사용자 프로그램이 운영체제의 서비스를 받기위해 커널함수를 호출하는 것
- 사용자나 프로그램은 직접 컴퓨터 자원에 접근할 수 없음
- 직접 하드웨어 자원에 접근하거나 수정하려 하는 경우 데이터 손상이 일어날 수 있음 ⇒ 방지
💡 자원 : CPU, RAM, 보조기억장치 등 연산을 위해 필요한 장치들의 이용 가능한 공간
2. Mode bit
CPU가 기계어를 실행할 때, 실행하는 주체가 운영체제인지 사용자 프로그램인지 구분하는 장치
- 보안 해칠 수 있는 중요 명령어에는 모니터 모드에서만 수행 가능한 ‘특권 명령’ 규정
- 하드웨어적으로 두 가지 모드의 operation 지원 ⇒ 커널 모드, 유저 모드
💡 커널 모드는 0, 유저 모드는 1 로 정의함
💡 Interrupt, Exception이 일어나는 경우 유저모드에서 커널모드로 변경됨
💡 Exception : 권한이 없는 기계어를 실행하는 경우
컴퓨터의 요소
컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어짐
1. CPU (하드웨어)
- 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행
2. 레지스터
- CPU 안에 있는 매우 빠른 임시기억장치
- 연산 속도가 메모리보다 수십 배에서 수백 배까지 빠름
3. 인터럽트
인터럽트 라인이 세팅되어 다음 기계어 실행 전 CPU 제어권을 자동으로 운영체제에 넘어가게 하는 것
** 현대 운영체제는 인터럽트에 의해 구동됨 **
- 인터럽트 당한 시점의 레지스터와 프로그램 카운터를 SAVE한 뒤 CPU의 제어를 인터럽트 처리 루틴에 넘김
- 하드웨어 인터럽트, 소프트웨어 인터럽트
# 하드웨어 인터럽트 (일반적인 인터럽트)
- 하드웨어가 발생시킨 인터럽트
- I/O 디바이스에서 발생하는 인터럽트
# 소프트웨어 인터럽트
- 트랩(Trap)
- Exception (프로그램 오류), System Call (커널 함수호출)
4. 타이머
일정시간 간격으로 인터럽트를 발생시킴 (CPU 제어권이 운영체제에 자동으로 넘어감)
- time sharing 구현을 위해 사용되기도 함
- CPU 독점 방지
5. DMA 컨트롤러 (Direct Memory Access)
I/O 디바이스가 메모리에 직접 접근할 수 있도록 하는 하드웨어 장치
- 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
- CPU 중재 없이 device의 buffer storage 내용을 메모리에 block 단위로 전송
- block 단위로 인터럽트 발생 (바이트 단위 X)
6. 디바이스 컨트롤러
모든 I/O 장치들을 전담하는 일종의 작은 CPU
- I/O : 실제 장치와 로컬버퍼 사이에서 일어남
💡 CPU → 디바이스 컨트롤러 : IO 작업요청
💡 디바이스 컨트롤러 → CPU : 인터럽트 발생 (작업 완료된 경우)
참고 도서
[주홍철] 면접을 위한 CS 전공지식 노트
[반효경] 운영체제 강의 - http://www.kocw.net/home/search/kemView.do?kemId=1226304
'STUDY > CS' 카테고리의 다른 글
[네트워크] IP 주소 / IPv4, IPv6, 클래스 기반 할당 방식 (0) | 2023.01.22 |
---|---|
[네트워크] TCP vs UDP 차이점 / 가상회선 패킷 교환 방식, 데이터그램 패킷 교환 방식 (0) | 2023.01.21 |
[네트워크] TCP/IP 4계층 (0) | 2023.01.21 |
[네트워크] 네트워크 토폴로지 (Network Topology) / 네트워크 분류 (2) | 2023.01.20 |
[디자인 패턴] 옵서버 패턴 (Observer Pattern) / 자바스크립트, 프록시 객체 (2) | 2023.01.10 |