IT recording...
[OS] 1. 운영체제 본문
[이화여자대학교 반효경 교수님의 강의를 듣고 정리한 글입니다.]
[그림과 함께 편하게 보려면 여기로]
https://adorable-aspen-d23.notion.site/OS-1-affe592d43104c8db1e55348e2c9c6f6
1. 운영체제란
1. 운영체제
- 정의 : 하드웨어 위에 설치되어, 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
- 하는 일 : 컴퓨터 시스템의 자원을 효율적으로 관리해준다.
- 프로세서, 기억장치, 입출력장치 등을 효율적으로 관리하는 것
- 실행중인 프로그램들에게 CPU 적절히 분배해서 할당해주자
- 실행중인 프로그램들에게 메모리 공간 적절히 분배해서 할당해주자
- 적절히 분배는 어떻게? 공평한게 효율적인가?
- NO! 효율적이지만, 굶는(starvation)은 없게끔 형평성 있게 ‘운영체제'가 해준다.
- CPU스케줄링, 메모리관리, 입출력관리 등
- 프로세서, 기억장치, 입출력장치 등을 효율적으로 관리하는 것
2. 운영체제 분류
1. 동시 작업 가능 여부
- 단일 작업 (single tasking)
- 한 번에 하나의 작업만 처리
- ex) MS-DOS 프롬포트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
- 다중 작업 (multi tasking)
- 동시에 두 개 이상의 작업 처리
사실 동시에 처리되는 것처럼 보이는거고, 두 개 이상의 작업이 실행될 수 있음을 의미
- 다수의 작업을 중앙처리장치(CPU)와 같은 공용자원을 나누어 사용하는 것
- UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 수행을 할 수 있음
- 동시에 두 개 이상의 작업 처리
2. 사용자 수
- 단일 사용자 (single user)
- ex) MS-DOS, MS Windows(일반적인 가정 컴퓨터)
- 다중 사용자 (multi user)
- 한 컴퓨터에 여러 user가 접근 → 보안 필요
- ex) UNIX, NT Server
3. 처리 방식
- 일괄 처리 (batch processing)
- 작업 요청을 모아놨다가 일정 시간이 지나면 한번에 수행
- 작업이 완전히 종료될 때까지 기다려야 함
- 지금 안씀 ~.~
- 시분할 방식
- 여러 작업을 수행할 때 컴퓨터 처리 능력(CPU)을 시간 단위로 분할하여 사용
- 일괄 처리 방식에 비해 응답 시간이 짧다.
- interactive한 작업에 효율적이다. (사용자와의 상호작용이 있어야 하는 경우 응답 시간이 짧아진다.)
- 일반적인 범용 OS(사용자를 위한)
- 실시간 (realtime OS)
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 함
- 데이터가 발생한 시점에서 필요한 계산처리를 즉석에서 처리하여 그 결과를 리턴한다.
- ex) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
3. 컴퓨터 시스템 구조 속 운영체제
1. 컴퓨터 구조
1. CPU
- 컴퓨터의 브레인
- 0과1로 연산을 제어하는 부분
- 구성
- 레지스터 : 연산에 필요한 데이터를 저장한다.
- PC(다음 명령어 저장), IR(현재 실행 명령어 저장) 등
- 제어장치 : 기계 명령어를 실행하는 순서를 제어
- 연산장치 : 덧셈,뺄셈,OR,AND,NOT과 같은 논리연산 수행
- 레지스터 : 연산에 필요한 데이터를 저장한다.
- 매 클럭마다 interrupt가 있는지 체크한다.
2. Memory
- 컴퓨터의 스케줄노트(노션)
- CPU가 프로그램을 실행하거나 데이터를 참조하기 위해 필요한 정보들을 저장해두는 공간
- (1) ← register - cache - main memory(RAM) - hard disk → (2)
- 1로 갈수록 빠르고 비싸다(용량작음) , 2로 갈수록 느리고 싸다(용량큼)
- 지역성을 고려하여 메모리에 적재한다.
- 시간적 지역성(가까운 미래에 또 접근할 가능성이 높은 것)
- 공간적 지역성(특정 데이터와 가까운 주소가 순서대로 접근될 때, 근처에서 접근할 가능성이 높은 것)
3. I/O Device
- 컴퓨터의 외부 손님
- 컴퓨터 외부와의 소통을 담당한다. (입력/출력)
- 입력) 키보드, 마우스, 터치패드
- 출력) 스피커,모니터,프린터
- Device Controller
- CPU의 비서
- 해당 I/O장치를 관리하는 일종의 작은 CPU이다.
- 구성 : local buffer + 명령 레지스터
- I/O 요청을 CPU대신 수행하고,
완료되면 CPU에 인터럽트를 걸어 작업이 끝났음을 알려준다. - ⇒ I/O 요청을 CPU대신 수행하고, 완료되면 DMA에 interrupt를 건다.
- CPU의 비서
4. DMA controller (Direct Memory Access)
→ 디스크 같은 많은 데이터를 입출력하는 장치를 CPU가 매번 전송 제어한다면? 끔찍하다
- CPU의 비서2
- Device Controller에서 메모리로의 데이터 전송을 CPU 도움 없이 DMA 컨트롤러가 수행한다.
- 실행과정
- I/O 장치의 interrupt를 받으면 local buffer에 있는 내용을 메모리로 복사한다.
- 메모리에 다 올리면 CPU에 interrupt를 걸어 다 수행 했음을 알린다.
- 장점
- CPU는 상태,제어 정보만을 교환하고, 데이터 전송은 비서(DMA controller)한테 시켜서 CPU의 실제 프로세스 작업 시간이 감소한다.
- 프로그램 수행 중 인터럽트 발생 횟수 최소화 및 시스템 효율성 증대
- CPU의 개입 없이 입출력장치와 주기억장치와의 데이터 직접 전송 가능
- 주의
- CPU랑 DMAC랑 둘 다 메모리 접근하면 충돌 가능
- → memory controller 를 통해 누가 먼저 접근할 지 순서를 제어한다.
5. Timer
- CPU를 특정 프로그램이 독점하는 것을 방지하기 위한 장치
- 타이머는 매 클럭마다 1씩 감소하고, 세팅한 타이머가 0이 되면 Timer interrupt를 발생시켜 운영체제에게 CPU제어권을 넘긴다.
- Time Sharing (시분할 처리방식)
2. 전반적인 작동 흐름
ex)사용자 프로그램은 직접 I/O작업을 실행할 수 없고, 운영체제를 통해서만 할 수 있다.
- 사용자 프로그램(A)이 I/O작업을 운영체제에게 요청한다. (CPU제어권을 운영체제에게 넘김)
- 운영체제는 I/O device controller한테 시킨다. (입출력 너가 해와)
- CPU는 다른 프로그램(B)에게 넘어간다. (CPU는 한시도 쉴 수 없어)
- (A 프로그램 상태 : Running → Blocked)
- I/O device controller는 열심히 입출력 처리한다. (근데 느림)
- I/O device controller가 작업을 끝내면 DMAC에게 interrupt 건다.
- DMAC은 I/O deivice controller의 local buffer에 있는 데이터를 메모리에 옮긴다.
- 다 옮겼으면 CPU에 interrupt 건다. (I/O작업 끝났고, 데이터도 메모리에 다 올려놨어요)
- CPU는 매 클럭마다 Interrupt를 확인하고, interrupt가 있다면 운영체제에 CPU 제어권이 돌아간다.
- 운영체제는 A프로그램 상태를 변경한다. (Blocked → Ready)
- 다시 CPU제어권을 돌리고 있던 프로그램(B)에게 반납한다.
- 사용자 프로그램 (A)는 Ready Queue에서 차례를 기다리고, 순서가 되면 다시 동작한다.
3. Interrupt
- SW Interrupt (=Trap)
- Exception : 프로그램이 오류를 범한 경우
- System Call : 프로그램이 커널함수를 호출하는 경우
- 사용자 프로그램이 운영체제의 서비스(I/O 등)을 받기 위해
- 운영체제는 올바른 요청인지 확인한다.
- HW Interrupt
- 키보드 클릭, 프린터 , 마우스 클릭 등
'Operating System' 카테고리의 다른 글
[OS] 6. CPU 스케줄링 (0) | 2022.04.24 |
---|---|
[OS] 5. 쓰레드 (0) | 2022.04.24 |
[OS] 4. 프로세스 시스템콜, 협력 - (3) (0) | 2022.04.24 |
[OS] 3. 프로세스 스케줄링 - (2) (0) | 2022.04.24 |
[OS] 2. 프로세스란? - (1) (0) | 2022.04.24 |
Comments