1.1 OS란
- 컴퓨터의 여러 응용프로그램 설치
- 여러 장치 효율적으로 작동
- 사용자가 컴퓨터를 손쉽게 이용할 수 있게 해줌
- 사용자 인터페이스, 자원 관리를 위한 프로그램의 집합
1.2 OS 역사
- 1세대 운영체제
- 일괄 처리 시스템 (Single-Stream Batch Processing System)
- 다수개의 프로그램을 읽어 저장, 한 번에 한 개씩의 프로그램을 실행
- 한꺼번에 여러 개 준비시켜, 다음 작업을 자연스럽게 연결해 실행
- 작업이 끝날 때까지 사용자의 중간개입 허용되지 않음
- 배치
- 한 개의 작업이 시작되면 그 일이 완전히 끝날때까지 다른 작업은 기다려야 함
- 일괄 처리 시스템 (Single-Stream Batch Processing System)
- 2세대 운영체제
- 다중 프로그래밍 시스템
- 다수의 작업이 같이 주기억장치에 넣어서, CPU가 바로 다음작업을 하도록 함
- 다중처리 시스템
- 여러 개의 처리장치(Processor(CPU))로 동시에 여러 작업을 병렬 실행
- 시분할 시스템
- CPU가 처리해 줄 수 있는 시간을 작업 수에 맞춰 분할 후,
- 일정량을 분배해서 번갈아 처리
- 다중 프로그래밍 시스템이 내장되어 있어야함
- 대화식 시스템
- 모니터와 입력장치를 이용해 대화하듯이 일을 처리하는 방식
- 다중 프로그래밍 시스템
- 3세대 운영체제
- 다중모드 시분할 시스템
- UNIX 출현
- 4세대 운영체제
- 마이크로프로세서의 개발(개인용 컴퓨터의 보급)
1.3 OS
- 운영체제의 5가지 구성 요소
- 쉘(사용자 or 응용프로그램 <=> 운영체제 의사소통) => 장치, 파일, 메모리, 처리기 관리
- 장치 = 키보드 모니터 하드디스크
- 파일 = 디렉터리(폴더) 파일 생성 삭제
- 메모리 = 주기억장치 할당, 경계 설정
- 처리기 = CPU 처리 능력 효율적으로 배분
- 쉘(사용자 or 응용프로그램 <=> 운영체제 의사소통) => 장치, 파일, 메모리, 처리기 관리
- OS의 위치
- 커널 = 메모리 상주 프로그램(memory resident program), 핵, 관리자(supervisor)
- 빈번하고 빠르게 실행해야 하는 프로그램
- 유틸리티 프로그램 = 주로 사용자 인터페이스(ex. COMMAND)
- 듀얼모드
- 유저모드
- 커널모드
- 유저 모드로 실행 중 커널 모드에서 해야 할 일이 생기면 프로그램은 시스템 호출을 하게 되고 이후 그 일을 해줄 운영체제 프로그램이 커널 모드에서 실행된 다음 다시 사용자 프로그램으로 복귀
2.1 OS의 목적
- 사용자의 편리성
- 자원의 효율적인 사용
(+) 설계 유지 보수가 쉽고 적응성이 좋으며 오류 없이 효율적이면 좋다.
2.2 몇 가지 상식
- 부팅
- 부트 프로그램 or 부츠트랩 로더(Bootstrap Loader) 사용
- 커널을 찾아 메모리에 올린 후 실행시켜주는 역할
- 부트 프로그램 or 부츠트랩 로더(Bootstrap Loader) 사용
- 레지스터: 메모리보다 빠른 기억장치
- 데이터 레지스터(연산)/ 주소 레지스터(주소 저장)/ 조건코드 레지스터 등..
- MBR, MAR, IR, PC
- PSW(Program Status Word) 프로그램 상태 워드: CPU 현재 상태정보 저장
- 조건코드(condition) 비트
- 인터럽트(가능, 불가능) 비트
- 현재 실행 모드 비트
2.3 인터럽트
폴링 & 인터럽트
- 폴링: CPU가 자원들의 상태를 주기적으로 확인하는 방식
- 단점: 폴링의 간격을 적절히 정해야 함, 상태변화가 없어도 일정량의 시간
- 인터럽트: 자원들이 능동적으로 자신의 상태변화를 CPU에 알림
- 장점: 상황 발생 시 즉각적으로 알림!
하드웨어 인터럽트 & 소프트웨어 인터럽트
- 하드웨어 인터럽트
- 하드웨어 자원 ⇒ CPU
- → (장치(devices), 주변장치(peripherals))
- 소프트웨어 인터럽트
- CPU ⇒ CPU
- ex. (트랩(Trap)=0으로 나누기), (시스템 콜)
인터럽트 처리
- 명령어 완료 후 처리
- CPU에 있는 레지스터 값(현 상태)을 시스템 스택에 저장하고 시작
문맥 교환
- 현재 상태(하고있던 일)을 다른 곳에 보관 후 잠시 다른 일을 CPU로 진행하도록 함
- 문맥 = CPU가 하고있던 일의 상태 = 상태 정보를 포함한 처리기 레지스터의 값
2.4 기억 장치의 계층적 구조
2.5 I/O 방식
프로그램에 의한 입출력
- CPU가 계속해서 컨트롤러의 버퍼에 입력을 확인 하는 방식
- 지속적으로 완료 여부 확인
- I/O가 완료될 때 까지 CPU낭비
인터럽트에 의한 입출력 (대부분의 방식)
- I/O완료 시 인터럽트를 통해 CPU에 알려지는 방식
- CPU낭비를 없앤다!!
- 단, 대량의 I/O system (ex. 은행) 에는 느려진다. (I/O 크고, 버퍼 작을 때 불리)
메모리에 직접 접근하는 입출력(DMA)
- 인터럽트에 의한 입출력의 일종이다
- 잦은 인터럽트 처리를 줄이기 위해 입출력 작업을 대신 해주는 채널 사용
- 채널(입출력 처리장치)
- 버퍼 대신 블록(버퍼보다 큼)을 사용 ⇒ I/O 부담 줄여준다
- 보조하드웨어 사용
독립적인 입출력
- 입출력 버스를 이용해 CPU에 연결
- 메모리는 따로 메모리 버스를 통해 연결
메모리 주소지정 입출력
- 입출력장치가 메모리와 함께 메모리 버스에 연결
- 각각 메모리의 한 번지를 할당받아서 사용(명령어)
'CS > 운영체제' 카테고리의 다른 글
Chapter 7: 메모리 관리 (0) | 2022.05.09 |
---|---|
Chapter 6: 교착 상태(Dead Lock) (0) | 2022.05.05 |
Chapter 5: 병행 프로세스와 동기화 (0) | 2022.05.03 |
Chapter 4: CPU 스케줄링 (0) | 2022.04.04 |
Chapter 3: 프로세스와 스레드 (0) | 2022.03.29 |