- 시험: 주관(1
2문제), 객관(4지선다 or 6개 중 1,23개 고르는 문제) 섞어서
운영체제(Operating System)
- 컴퓨터의 여러 응용 프로그램을 설치되게 해주고, 여러 가지 장치(하드웨어)를 효율적으로 작동하도록 하며, 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 해주는 프로그램의 집단
- **사용자 인터페이스(User Interface)**와 **자원 관리(Resource Management)**를 위한 프로그램의 집합
- 시스템 소프트웨어 = 운영체제 + 시스템 프로그램 집단
- 시스템 프로그램: 컴퓨터 하드웨어에 의존적이며 그 시스템을 정상적으로 작동시키기 위해 필요한 프로그램
- 컴퓨터 기종에 따라 다름
- ex> 윈도 등
- 응용 소프트웨어 = 응용 프로그램 집단
- 기종에 관계없이 작성될 수 있음
- ex> 게임 프로그램 등
- 다수 사용자(Multituser)컴퓨터 시스템: 다수의 사용자가 한꺼번에 컴퓨터와 접속하여 각자 동시에 다양한 일을 할 수 있는 환경 -> 에서 사용될 운영체제에 대해 이야기할거임
- 읽어보기만 함. 중요한 내용들 몇개만 정리할거임
일괄처리 시스템(Single-stream Batch Processing Systems)
- IBM 701에 와야 운영체제의 1세대라 할 수 있는 기능들이 장착됨
- 일괄처리: 다수의 프로그램을 읽어 저장해 놓되, 한 번에 한 개씩의 프로그램을 실행시켜주는 방식
- 처리해야할 작업(Job)들을 한꺼번에 여러개 준비시켜 놓고(Single-stream) 다음 작업의 처리를 자연스럽게 연결되도록 함 -> Job-to-job의 transition을 smooth하게 함
- Batch
- 초창기 Batch: 작업이 차례대로 한 개씩 처리됨-> 한 개의 작업이 시작되면 그 일이 완전히 끝날 때까지 다른 작업은 기다려야함
- 이후 Batch -> 일괄처리를 하되 다중 프로그래밍을 하는 Batch - 작업 끝날 때까지 사용자의 중간 개입이 허용되지 않음
다중 프로그래밍 시스템
- 일괄처리의 문제: CPU를 최대한 가동시키는 것이 그 시스템의 능력을 최대한 발휘하는 것이고, 이것이 사용자들의 작업을 빨리 처리해줄 수 있는 것인데 한 작업이 완료될때까지 CPU를 다른 작업에 넘기지 않는다면 이외의 기간에 CPU가 낭비됨 (Ex. 입출력(I/O))
내장 프로그램 개념
: 어떠한 작업도 실행되기 위해서는 **주기억장치(Main Memory)**에 있어야함.- 다중 프로그래밍 시스템: 다수(Multi) 개의 작업(Program)이 같이 주기억 장치에 있도록 한 방식
- 다중처리 시스템: 여러개의 처리장치(Processor, CPU와 같은 기능을 하는것)를 장착하여 동시에 여러 작업을 병렬로 실행하여 처리 속도를 최대한 높이는 방식
- 다중처리를 위해 다중 프로그래밍은 필요될 수 밖에 없음!
시분할 시스템(Time Sharing)
- CPU가 처리해 줄 수 있는 시간을 작업 수에 맞춰 분할하여 각자에게 일정량만큼 씩 분배하여 번갈아 가며 처리 -> 실제로는 많은 작업이 있음에도 각 작업은 CPU가 자신의 일을 계속해서 처리해주고 있다는 생각을 하게됨
- 시분할 시스템이 효과적으로 운영되기 위해 다중 프로그래밍 시스템이 먼저 필요됨. (다음으로 넘어갈 때 걸릴 시간을 가장 줄일 수 있는 방법..)
대화식 시스템(Interactive)
- 시분할 시스템은 사용자에게 바로바로 응답해줄 수 있음 -> 응답을 즉시 보기 위해서는 모니터 필요, 계속해서 다음 일 의뢰 위해 키보드, 마우스 등의 입력장치 필요 -> 시스템과 사용자가 모니터와 입력 장치를 통해 마치 대화하듯이 일을 처리해 나가는 방식
마이크로 프로세서(Micro-processor)
:- 연산장치, 제어장치 그리고 여기에 필요한 레지스터들을 하나의 칩에 집적시켜 넣어놓은 것
- 컴퓨터의 크기와 가격을 획기적으로 줄임
- 개인용 컴퓨터 산업의 출발, 오늘날 정보화 시대의 토대가 됨
- 사용자 인터페이스(쉘)+ 자원들의 관리[장치관리+파일관리+메모리관리+처리기관리]
쉘(Shell)
: 사용자 인터페이스. 사용자나 응용 프로그램이 운영체제와의 정보 교환이나 운영체제로의 요청 창구로 필요한 요소- 장치들의 관리: 시스템에 있는 주변 장치(키보드,모니터,프린터, 하드디스크 등)를 제어
- 파일 관리: 사용자 or 프로그래머로 하여 파일을 만들고,지우고, 수정하고, 이름을 부여. 디렉터리(폴더) 등을 관리하는 일
- 메모리 관리: 주기억 장치의 관리 담당.
- 주기억 장치의 일정 부분을 할당하는 일
- 주기억 장치 안에 있는 프로그램들의 경계를 설정하여 서로 침범하지 못하게 하는 등의 일
- 처리기 관리: 컴퓨터의 처리기(CPU)의 처리능력을 각 작업에 효과적으로 배분토록 하는 일 => 이러한 관리들은 밀접한 연관을 가지고 실행됨 (동떨어져있지 x)
- 커널(Kernel)+유틸리티 프로그램(Utility Program)
- 커널
- 운영체제의 각종 기능들 중 사용자와 실행 프로그램을 위해 매우 빈번하게 사용되는 부분
- 컴퓨터가 처음 부팅될 때에 주기억 장치에 적재되어 시스템의 운영이 종료(shutdown)될 때까지 계속해서 주기억 장치에 남아있게 되는 부분
- 주기억 장치에 상주시키는 이유? : 빈번히, 빨리 실행되어야할 프로그램을 디스크에 두었을 경우 이들이 실행될 때마다 주기억 장치로 불러들여야 함 -> 디스크와 주기억 장치 사이의 입출력에 해당하는 일 -> 많은 시간을 요구하게 되어 시스템 성능 저하
- 운영체제의 핵심 : 핵, 관리자, 메모리 상주(Memory Resident) 프로그램 이라고도 불림.
- 유틸리티
- 왜 유틸리티라는 것을 따로 뗴어냈을까? : 주기억 장치 용량 때문
- 한정된 용량의 주기억 장치에 운영체제가 거의 대부분을 차지할 경우 사용자 프로그램들이 올라올 공간이 매우 줄어들게 됨 -> 많은 사용자 프로그램들이 효과적으로 실행되지 못함
- 운영체제 프로그램 중 자주 사용되지 않는 부분은 디스크에 두고 필요할 때 잠시 주기억 장치로 넣어 실행시킨 후 다시 디스크로 보냄 -> 사용자 프로그램을 위한 주기억 장치의 공간을 확보
- 사용자 인터페이스의 대부분이 유틸리티에 속함
- 왜 유틸리티라는 것을 따로 뗴어냈을까? : 주기억 장치 용량 때문
- 커널과 유틸리티를 구분짓는 명확한 잣대는 없음! -> 설계자의 기준에 따라 달라질 수 있음
- 커널
- 펌웨어(Firmware): 생긴건 하드웨어고 내부적으로 프로그램인 형태
- 커널 중에서도 좀 더 빠른 실행이 요구, 높은 수준의 보호가 필요한 프로그램들은 마이크로 프로그래밍을 하여 **롬(ROM)**이나 **PLA(Programmable Logic Array)**와 같은 칩의 형태로 만들어놓기도 함
- 듀얼 모드(Dual mode):
유저 모드(User Mode)
+커널 모드(Kernel Mode)
- 사용자 프로그램 간에, 사용자와 운영체제 프로그램 간에 설정된 영역은 보호되어야함.
- 시스템에 있는 여러 장치들을 사용자가 마음대로 작동시켜서도 안되고, 시스템에서 설정되어 있는 여러가지 데이터들을 바꿔서도 안됨 => 이런 권한은 커널 모드로 실행되는 프로그램들만이 가지게 함. (운영체제가 담당해도록 해줌.) (응용 프로그램이나 사용자 프로그램은 이런 권한이 없는 유저 모드에서 실행되도록 함.)
- 유저 모드라고 해서 운영체제가 아니라는 의미는 아님! : 이 부분에 있는 프로그램들이 유틸리티에 속함, 실행될 때의 모드가 유저 모드
시스템 호출(System Call
- 사용자 프로그램에서 발생되는 읽기, 쓰기와 같은 디스크나 메모리를 접근(Access)(커널 프로그램밖에 할 수 없는 종류의 일)해야할 때 필요
- 유저 모드로 실행 중 커널 모드에서 해야할 일이 생기면 시스템 호출을 함 -> 그 일을 해줄 운영체제 프로그램이 커널 모드에서 실행된 다음 다시 사용자 프로그램으로 복귀