[운영체제] Chapter 1. Introduction to Operating Systems
2022. 11. 20. 00:55ㆍCS/운영체제
728x90
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎
1. 운영체제란 무엇인가?
- 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
- 좁은 의미의 운영체제 - 커널
- 운영체제의 핵심 부분으로 컴퓨터를 부팅한 이후 항상 메모리에 상주하는 부분
- 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간에 낭비가 심할 것이기 때문
- 운영체제의 핵심 부분으로 컴퓨터를 부팅한 이후 항상 메모리에 상주하는 부분
- 넓은 의미의 운영체제
- 커널뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
- 메모리에 상주하지 않는 별도의 독립적인 프로그램이지만 운영체제의 범주에는 포함
2. 운영체제의 목적
- 컴퓨터 시스템의 자원을 효율적으로 관리 - 하드웨어를 위한 역할
- 프로세서, 기억장치, 입출력 장치(= HW 자원) 등의 효율적 관리
- 주어진 자원으로 최대한의 성능을 내도록(효율성이 가장 큰 목표이지만)
- 일부가 지나치게 희생되지 않게 사용자 간의 형평성 있는 자원 분배(형평성 역시 고려해야 할 목표)
- 예) 실행 중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당, 메모리 공간을 적절히 분배
- 사용자 및 운영체제 자신의 보호
- 프로세스, 파일, 메시지(= SW 자원) 등을 관리
- 프로세서, 기억장치, 입출력 장치(= HW 자원) 등의 효율적 관리
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공 - 사용자를 위한 역할
- 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
- 현대의 컴퓨터는 하나의 컴퓨터에서 동시에 여러 프로그램이 수행되는 것을 지원
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
- 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
* 무조건적으로 CPU를 1/n을 나눠서 할당하지 않고, 필요할 때 특정 프로그램에게 다소 몰아주는 것이 컴퓨터 전체를 효율적으로 만들 수 있다.
3. 운영체제의 분류
- 동시 작업 가능 여부
- 단일 작업(single tasking): 한 번에 하나의 작업만 처리
- 예) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
- 다중 작업(multi tasking): 동시에 두 개 이상의 작업 처리
- 예) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
- 최근의 운영체제들은 대부분 다중 작업을 지원한다. 즉 하나의 프로그램이 끝나기 전에 다른 프로그램을 실행시키는 것이 가능하다.
- 이 때문에 효율성, 형평성의 문제가 발생
- 단일 작업(single tasking): 한 번에 하나의 작업만 처리
- 사용자의 수: 컴퓨터 한 대를 여러 사용자가 동시에 접속해서 사용할 수 있는지 없는지
- 단일 사용자(single user)
- 예) MS-DOS(한 번에 하나의 작업만 가능), MS Windows(혼자 사용하지만 다중 작업이 가능)
- 다중 사용자(multi user)
- 여러 사용자가 터미널 형태로 동시에 접속해서 사용할 수 있다면 다중 사용자용 운영체제
- 예) UNIX, NT server, 서버라고 부르는 컴퓨터는 여러 사용자가 동시에 접속해 사용할 수 있음
- 단일 사용자(single user)
- 처리 방식
- 일괄 처리(batch processing)
- 작업 요청의 일정량을 모아서 한꺼번에 처리(= interactive 하지 않음)하고, 모든 작업이 완전히 종료된 후에 결과를 얻을 수 있다.
- 작업이 완전 종료될 때까지 기다려야 함 → 사용자 입장에서는 응답 시간이 길다.
- 예) 초기 Punch Card 처리 시스템
- 시분할(time sharing) - 주로 범용 컴퓨터에서 사용
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 운영체제가 다중작업을 처리할 때에는 여러 프로그램이 CPU와 메모리를 공유
- 동시에 여러 작업이 실행되는 것처럼 보이지만, 운영체제가 작은 시간 단위로 나누어 여러 작업에 번갈아가며 시간을 할당
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐 → 컴퓨터를 자기 혼자 독점적으로 사용하는 것처럼 생각할 수 있다.
- 예) UNIX
- interactive한 방식: (사용자의 요청에 대한 결과를 곧바로 얻을 수 있는 대화형 시스템)
- 시간의 제약조건을 만족하지는 않음 = 데드라인이 있는 것은 아니다.
- 사람이 느끼기에도 빠르게 해 주면서 동시에 주어진 자원을 최대한 활용하는 것이 목적이기 때문에 정확한 시간을 지키는 시스템은 아니다. 사람에 특화된 시스템.
- best-effort: 최대한 노력은 하되, 보장은 해주지 못한다.
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 실시간(Realtime OS) - 특수한 목적을 가진 시스템에서 주로 사용
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
- 실시간 시스템의 개념 확장(시간 제약의 중요성에 따라)
- Hard realtime system(경성 실시간 시스템)
- 주어진 시간을 지키지 못할 경우 매우 위험한 결과를 초래할 가능성이 있는 제어 시스템
- 예) 원자로 제어, 미사일 제어, 반도체 장비
- Soft realtime system(연성 실시간 시스템)
- 데이터가 정해진 시간 단위로 전달되어야 올바른 기능을 수행할 수 있는 시스템
- 예) 멀티미디어 스트리밍 시스템
- Hard realtime system(경성 실시간 시스템)
- 일괄 처리(batch processing)
⇒ 우리가 배울 운영체제는 다중 작업을 지원하고 있고, 다중 사용자를 웬만하면 지원하고 있고, 시분할 방식으로 운영되고 있다.
3-1. 몇 가지 용어
- Multitasking: CPU는 매 순간 하나의 작업만 실행되고 있지만 짧은 시간 간격으로 분할해서 할당하기 때문에 동시에 실행되는 것처럼 보인다.
- multi-programming(다중 프로그래밍): 메모리에 여러 프로그램이 올라가 있음을 강조
- Time sharing: CPU의 시간을 분할하여 나누어 쓴다는 의미 강조
- Multiprocess
→ 위의 용어들은 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻한다.
- multi-processor system(다중 처리기 시스템): 하나의 컴퓨터에 CPU(processor)가 여러 개 설치된 경우를 뜻함
4. 운영체제의 예
- 유닉스
- 코드의 대부분을 C언어로 작성(사람이 이해하기도 쉽다 →), 높은 이식성(해당 소프트웨어를 다른 기종의 기계로 옮기는 것이 얼마나 용이한지), 최소한의 커널 구조, 복잡한 시스템에 맞게 확장 용이, 소스 코드 공개, 프로그램 개발에 용이, 다양한 버전(System V, FreeBSD, SunOS, Solaris, Linux)
- 대형 컴퓨터 → 멀티 테스킹 O, 여러 사용자 동시 지원 O
- DOS(Disk Operating System)
- 개인용 컴퓨터 → 단일 사용자용 운영체제, 단일 작업 지원
- 메모리 관리 능력의 한계(주 기억장치: 640KB)
- MS Windows
- MS사의 다중 작업용 GUI 기반 운영 체제, Plug and Play(새로운 하드웨어를 장착하면 운영체제가 자동으로 하드웨어를 감지하여 그에 맞게 설정), 네트워크 환경 강화, DOS용 응용 프로그램과 호환성 제공, 불안정성, 풍부한 지원 소프트웨어
- Handheld device를 위한 OS
- PalmOS, Pocket PC (WinCE), Tiny OS
5. 운영체제의 구조
- CPU: CPU 스케줄링: 어떤 프로세스에게 CPU를 할당해 작업을 처리할 것인가?
- CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익을 당하지 않도록 하는 것이 목표
- 먼저 도착한 것을 먼저 처리하는 것은 효율적이지 않다.
- CPU가 하나밖에 없는 시스템에서 하나의 프로그램이 CPU를 점유하고 있으면 뒤의 프로그램은 대기만 해야 함
- 속도: Disk < memory < CPU ~ 자원의 특성을 최대한 활용하는 관리 방식이 필요
- memory: 메모리 관리: 한정된 메모리를 어떻게 분배할 것인가?
- 메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부의 기억장치, 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다.
- 무조건 1/n로 나누는 것은 좋지 않다.
- CPU에서 프로그램을 실행하려고 하면 최소한 프로그램 실행에 필요한 부분은 메모리에 올라와 있어야 하는데
~ 메모리를 지나치게 조금 가지고 있다고 가정하면 ~ 디스크에서 읽어와야 한다 ~ 프로그램이 원활하게 실행 X - 메모리에 너무 많은 프로그램을 동시에 올려두는 것보다는 적어도 CPU에서 원활하게 실행되게 하기 위한 메모리 용량은 받을 수 있도록 운영체제가 지원해줘야 한다.
- CPU에서 프로그램을 실행하려고 하면 최소한 프로그램 실행에 필요한 부분은 메모리에 올라와 있어야 하는데
- 메모리 용량은 한계가 있기 때문에 메모리 용량이 꽉 차있다면 어떤 것을 디스크로 쫓아내야 하는가? (효율성)
- CPU에서 다시 사용할 가능성이 높은 것을 쫓아내면 X
- (LFU) 최근에 많이 사용되었다면 → 미래에도 사용될 가능성이 높을 것으로 예측
- (LRU) 가장 오래 전에 참조한 페이지를 삭제할 수도 있다
- 플래시메모리: 반도체 장치, NAND형(스토리지)
- 특징: 전원이 나가도 그대로 유지(= 비휘발성), 전력 소모가 적음, 물리적인 충격에 강함, 크기가 작아 가볍다
→ 모바일 장치에 적합 - 사용 형태: 모바일 장치의 스토리지에서 출발해서 하드 디스크 대용의 SSD, 데이터 센터같은 큰 서버 환경에서도 사용 확장
- 약점: 쓰기 횟수 제약, 데이터가 시간이 흐름에 따라 변질될 수 있음
- 특징: 전원이 나가도 그대로 유지(= 비휘발성), 전력 소모가 적음, 물리적인 충격에 강함, 크기가 작아 가볍다
- Disk: 파일 관리: 디스크에 파일을 어떻게(조각조각, 연속적으로) 보관할 것인가?
- 디스크 스케줄링: 디스크에 들어온 요청(read, write)을 head에 가까운 위치에 있다면 늦게 요청이 들어왔더라도 먼저 처리
- 디스크 스케줄링은 디스크의 head의 움직임을 최소화하면서 많은 요청을 빨리 처리할 수 있을지를 고려 + 기아 문제
- CPU 스케줄링은 너무 빠른 CPU를 어떻게 관리할 것인지
- 디스크 스케줄링: 디스크에 들어온 요청(read, write)을 head에 가까운 위치에 있다면 늦게 요청이 들어왔더라도 먼저 처리
- I/O device: 입출력 관리: 각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고받게 할 것인가?
- I/O device는 다른 장치들에 비해 상당히 느리다. → 속도차를 극복하기 위해 캐싱, 인터럽트
- 캐싱: 중간 단계를 두는 것, 메모리와 디스크 사이의 속도 차이를 완충하기 위해 메모리에 데이터의 복제본을 보관해서 요청이 들어오면 복제본을 전달
- I/O 장치가 CPU에게 보고할 것이 있으면 인터럽트를 걸고 → CPU는 CPU 스케줄링에 따라 작업을 수행하다 인터럽트가 발생하면 하던 일을 잠시 멈추고 인터럽트에 대한 요청 서비스를 수행 → 완료하면 인터럽트가 발생하기 직전의 상태를 복구시켜 중단되었던 작업 재개
- 주변 장치들은 CPU의 서비스가 필요한 경우에 신호를 발생시켜 서비스를 요청할 때 신호를 인터럽트라 한다.
- 프로세스 관리
- 프로세스의 생성과 삭제
- 자원 할당 및 반환
- 프로세스 간 협력
- 그 외
- 보호 시스템
- 네트워킹
- 명령어 해석기(command line interpreter)
[복습]
- 운영체제: 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어를 연결하는 소프트웨어 계층
- 좁은 의미: 커널
- 운영체제의 목적
- (하드웨어) 컴퓨터 시스템의 자원을 효율적으로 형평성 있게 관리
- (사용자) 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공, 운영체제가 대행
- 운영체제의 목적
- 동시 작업 가능 여부(단일 작업, 다중 작업)
- 사용자의 수(단일 사용자, 다중 사용자)
- 처리방식(일괄 처리, 시분할, 실시간)
- 운영체제의 예
- 유닉스(멀티 테스킹 O, 다중 사용자)
- DOS(단일 작업, 단일 사용자)
- MS Window(다중 작업, 단일 사용자)
- 운영체제의 구조
- CPU: 어떤 프로그램에 CPU를 줘서 CPU를 가장 효율적이고 형평성 있게 사용할 것인가
- 메모리: 한정된 메모리를 어떻게 분배할 것인가?
- 디스크: 디스크에 파일을 어떻게 보관할 것인가?
- 입출력 장치: 각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고받을 것인가?
- 프로세스 관리
- 그 외
이화여자대학교 반효경 교수님의 [2014년 1학기 운영체제], [2017년 1학기 운영체제] 강의 정리입니다.
반효경 교수님의 [운영체제와 정보기술의 원리] 교재를 참고하였습니다. 감사합니다.
https://core.ewha.ac.kr/publicview/C0101020140307151724641842?vmode=f
728x90
'CS > 운영체제' 카테고리의 다른 글
[운영체제] Chapter 3. Process(2) (0) | 2022.12.14 |
---|---|
[운영체제] Chapter 3. Process(1) (2) | 2022.12.11 |
[운영체제] Chapter 2. System Structure & Program Execution (2) (0) | 2022.11.24 |
[운영체제] Chapter 2. System Structure & Program Execution (1) (0) | 2022.11.23 |
[운영체제] Chapter 1. 강의소개 (0) | 2022.11.19 |