CS/운영체제

day02 #2. 컴퓨터 시스템의 구조

수e 2022. 4. 9. 22:40


1. 운영체제의 분류
1) 동시작업 가능 여부
: 단일 작업 ex) MS-DOS프롬프트 상에서는 한 명령의 수행을 끝내기 전 다른 명령 수행 불가
: 다중 작업 ex) UNIX, MS Windows등에서는 한 명령 수행이 끝나기 전 다른 명령 수행 가능

2) 사용자 수

3) 처리 방식
: 일괄 처리(batch processing)  - 작업 요청의 일정량을 모아 한번에  처리. 작업이 완전 종료될 때까지 대기해야 함
: 시분할(time sharing)  - 일괄 처리 시스템에 비해 짧은 응답 시간. 컴퓨터 처리를 일정한 시간 단위로 분할해 사용
- ex) UNIX 등. 
: 실시간(Realtime OS) - 정해진 시간 안에 어떤 일이 반드시 종료됨이 보장되어야 함(데드라인)
- ex) 경성 실시간 시스템 - 원자로 제어, 미사일 제어 등
        연성 실시간 시스템 - 동영상 끊김 등(초당 n프레임의 데드라인)

2. 운영체제의 예
1) 유닉스(UNIX)
: 서버를 위한 운영체제로서 등장 - 복잡
: 높은 이식성
: 코드의 대부분이 C언어
: 최소한의 커널 구조
: 복잡한 시스템에 맞게 확장이 용이
: 소스 코드 공개
: 프로그램 개발에 용이
: 다양한 버전(System V, FreeBSD, SunOS, Solaris, Linux)

2) DOS
: MS사에서 1981년 IBM-PC를 위해 개발
: 단일 사용자용 운영체제

3) MS Windows
: 네트워크 환경 강화
: DOS용 응용 프로그램과의 호환성
: 불안정성

4) Handled device를 위한 OS
: PalmOS, Pocket PC, Tiny OS

 

 


3. Mode bit
: 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 보호장치 필요
: Mode bit을 통해 하드웨어적으로 두 가지 모드의 operation 지원
1. 사용자 모드 - 사용자 프로그램 수행
2. 모니터 모드 - OS코드 수행 (=커널 모드, 시스템 모드)
: 보안을 해칠 수 있는 주요 명령어는 모니터 모드에서만 수행 가능한 '특권명령'으로 규정
: interrupt나 Exception 발생시 하드웨어가 Mode bit을 0으로 바꿈
: 사용자프로그램에게 cpu를 넘기기 전에 Mode bit을 1로 세팅
 
4. Timer
: 정해진 시간이 흐른 뒤 운영체제에게 제어권이 넘어가도록 인터럽트를 발생시킴
: 타이머는 매 클럭 틱 때마다 1씩 감소
: 타이머 값이 0이 되면 타이머 인터럽트 발생
: cpu를 특정 프로그램이 독점하는 것으로부터 보호
 => 타이머는 Time sharing을 구현하기 위해 널리 이용됨


5. 컴퓨터 시스템 구조
: 시스템콜 - 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널함수를 호출하는 것
: 인터럽트 - 인터럽트 당한 시점의 레지스터와 프로그램 카운터를 save한 후 cpu의 제어를 인터럽트 처리 루틴에 넘긴다
- 넓은 의미  : 하드웨어 인터럽트(하드웨어가 발생시킨 인터럽트)
    : trap(소프트웨어 인터럽트) - Exception 프로그램이 오류를 범한 경우
 - System call 프로그램이 커널 함수를 호출하는 경우
- 인터럽트 벡터 : 해당 인터럽트의 처리 루틴 주소를 가지고있음
- 인터럽트 처리 루틴(인터럽트 핸들러)
- 현대 운영체제는 인터럽트에 의해 구동됨

6. 동기식 입출력과 비동기식 입출력

1) 동기식 입출력(synchronous I/O) - 싱크로=동시에, 시간적으로 잘 맞게, 동기화
: I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
: 구현방법
# 1.  I/O가 끝날 때까지 CPU를 낭비시킴 -> 매시점 하나의 I/O만 일어날 수 있음
# 2. I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 
-> I/O 처리를 기다리는 줄에 그 프로그램을 줄세움
-> 다른 프로그램에게 CPU를 줌

2) 비동기식 입출력
: i/o가 시작된 후 입출력 작업이 끝나길 기다리지 않고 제어가 사용자 프로그램에 직접 넘어감

=> 1), 2) 모두 I/O의 완료는 인터럽트로 알려줌

7. DMA(Direct Memory Access)
: 빠른 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용
: cpu의 중재 없이 디바이스 컨트롤러가 디바이스의 buffer storage의 내용을 메모리에 block 단위로 직접 전송
: 바이트 단위가 아니라 block 단위로 인터럽트를 발생시킴