운영체제
운영체제 정의
- 컴퓨터 하드웨어와 컴퓨터 사용자 간의 매개체 역할을 하는 소프트웨어
- 사용자 프로그램을 수행할 수 있는 환경 제공
운영체제 목적
- 편의성 (Convenience for human) – 컴퓨터 시스템을 편리하게 이용
- 효율성 (effieciency for device) – 컴퓨터 하드웨어를 효율적으로 관리
운영체제에 대한 관점
- 자원 할당자
- 컴퓨터 시스템을 공정하고 효율적으로 운영하기 위해 어떻게 자원을 할당할 것인지 결정
- 다양한 입출력장치와 사용자 프로그램의 통제자 (제어 프로그램)
- 제어 프로그램은 사용자 프로그램을 통제하여 오류나 컴퓨터의 부적절한 사용 방지
운영체제 유형
1. 일괄 처리 시스템 (batch processing system)
- CPU의 유휴 상태(idle state)의 시간을 없애기 위해 작업 순서의 자동화(automatic job sequencing) 개념 도입
- 상주 모니터
- 한 프로그램에서 다음 프로그램으로 제어를 자동적으로 넘기는 것
- 상주 모니터에게 전달할 정보를 작업 제어 카드(job control card)에 수록
- 작업의 준비와 실행 순서를 자동화함으로써 시스템의 성능 증진

- 한 작업이 시스템 자원을 독점 (작업이 끝날 때까지 기다려야 함)
- 사용자 입력이 필요한 경우 CPU는 idle state가 되어 일을 쉬게 되어 낭비가 됨
2. 다중 프로그래밍 시스템 (multiprogramming system)
- CPU가 항상 수행되도록 하여 이용도를 높이기 위한 방안
- 주기억장치 내에 여러 프로그램 적재
- 여러 개의 작업을 준비 상태로 두고, 준비 상태에 있는 여러 작업들 중 어느 한 작업을 실행할 작업으로 선정
- 기억장치 관리 기법, 중앙처리장치 관리 기법 등 필요
- 장치 스케줄링, 교착 상태(deadlock) 문제, 병행 제어(concurrency control) 및 보호 문제 등 고려

- [그림 2]는 [그림 1]과 달리 프로그램1이 idle state가 되면 프로그램2에게 자원을 할당하여 다른 작업을 수행하게 함
3. 시분할 시스템 (time-sharing system)
- 다중 프로그래밍의 변형된 형태
- 각 사용자들에게 컴퓨터 시스템을 독점하는 느낌을 주도록 하는 시스템 (실제로는 여러 사람이 쓰고 있지만, 나 혼자 독립된 시스템을 쓰는 것처럼 느끼도록 함)
- 여러 사용자들이 컴퓨터 자원에 대한 짧은 시간 단위의 공유(sharing)를 통하여 구현
- 사용자는 대화식(interactive) 단말장치를 이용하여 시분할 시스템에 접근
- 여러 사용자에 대한 공정한 자원 공유 보장
- CPU 스케줄링 (어떤 사용자에게 배정할 것인가)
- 실행 중인 프로세스 간의 통신
- 입출력장치의 사용에 대한 제어 및 관리 능력

- Queue에 여러 프로그램이 적재되면 하나 조금 실행하고 뒤로 보내고 다른 것 조금 실행하고 뒤로 보내고 해서 작업 수행
4. 다중 처리기 시스템 (multiprocessors system)
- 컴퓨터 시스템을 여러 개의 processor로 구성
- 공유 기억장치(common memory)를 통하여 하나로 연결된 다중 처리기(multiprocessor)를 제어하고 공유함
- 시스템의 운영 환경
- 밀착된 결합 (tightly coupled)
- processor들이 해당 작업을 처리함에 있어서 매우 밀접하게 동기화
- 느슨한 결합 (loosely coupled)
- processor 간의 동기화 문제가 엄격하지 않음
- 두 개 또는 그 이상의 processor들을 결합함으로써 보다 높은 작업의 처리율(throughput) 제공
- 밀착된 결합 (tightly coupled)
- 여러 프로세서 간의 기억장치 공유, processor 스케줄링, 신뢰성과 병렬 계산(parallel computation), 최적의 연결 기법, 같은 자원을 요구하는 processor 간의 경쟁 제어

- [그림 4]처럼 여러 CPU와 하나의 기억장치를 통해 여러 프로그램 실행
5. 개인용 컴퓨터 시스템 (personal computer system)
- 대형 (mainframe) 시스템보다 작고 값이 싼 초소형 컴퓨터
- CPU, 주변 장치 이용률을 최대화하는 것 보다 편리성, 응답성이 더 중요
6. 분산 처리 시스템 (distributed processing system)
- 하나의 시스템처럼 보이는 독립된 컴퓨터들의 집합
- 통신망에 연결된 여러 컴퓨터들의 처리 능력을 이용하여 메시지 전달을 통해 거대한 계산 문제를 해결하려는 분산처리 모델
- 시스템 종류
- 밀착된 결합 (tightly coupled)
- processor들이 기억장치와 클럭 공유
- 느슨한 결합 (loosely coupled)
- processor들이 기억장치와 클럭 미공유
- 각 processor는 자신의 local 기억장치 소유
- processor들은 고속의 버스나 전화선과 같은 통신 라인을 통해 통신
- 밀착된 결합 (tightly coupled)
- 두 가지 대응되는 기법의 운영체제
- 네트워크 운영체제
- 노드 간 기종의 차이가 심함
- 대규모 네트워크 시스템에 사용
- 각 노드는 독자적인 운영체제 보유
- 통신기능은 기존 운영체제 위에 존재하며, 자원 공유가 어려움
- 분산 운영체제
- 각 노드들을 통괄할 수 있는 하나의 운영체제로 운영
- 통신기능은 운영체제 설계 시 고려
- 미니, 마이크로컴퓨터 등으로 연결된 근거리 네트워크 시스템에서 많이 사용되며, 자원 공유가 용이
- 네트워크 운영체제
7. 멀티미디어 시스템 (multimedia system)
- 멀티미디어 콘텐츠를 저작(authoring)할 수 있는 기능과 환경 제공
- 저작 시스템 (authoring system) : 멀티미디어 콘텐츠를 제작할 수 있는 기능과 환경 제공
- 재생 시스템 (presentation system) : 멀티미디어 콘텐츠 재생

8. 임베디드 시스템 (embedded system)
- 마이크로 프로세서 또는 마이크로 컨트롤러 내장
- 시스템 제작자가 의도한 기능만 수행할 수 있도록 제작된 시스템 (자동차, 키오스크, 각종 가전제품 등)
- 전체 장치의 일부분으로 구성되며 제어가 필요한 시스템의 두뇌 역할을 하는 특정 목적의 컴퓨터 시스템
운영체제에 대한 관점
1. 자원 관리자 관점
- 운영체제의 기능은 자원이 효율적으로 사용되도록 관리하고 다양한 요구를 가지는 사용자 간에 발생할 수 있는 자원에 대한 경쟁 및 이로 인한 충돌 해결
- 어떤 과정을 수행하는가?
- 자원의 상태 추적 / 저장
- 어떤 프로세스가 언제 어떤 자원을 얼마나 사용할 것인지를 결정하기 위한 정책 수립
- 자원의 할당
- 자원의 회수
- 어떤 기능을 가지고 있는가?
- 프로세스 관리 기능
- CPU와 프로세스의 상태 추적 / 저장
- 어떤 작업에게 프로세서를 사용하도록 할 것인지 결정
- 필요한 하드웨어 레지스터를 설정함으로써 프로세스에게 CPU 할당 (디스패처)
- 프로세스가 수행을 마치거나, 허용된 시간을 초과한 경우 CPU 회수
- 기억장치 관리 기능
- 기억장치 상태 추적 / 저장
- 어떤 프로세스에게 언제, 얼마의 기억장치를 할당할 것인지 결정
- 프로세스가 기억장치를 요구하면 앞에서 결정한 내용에 따라 할당
- 프로세스가 더 이상 기억장치를 필요로 하지 않게 되면 회수
- 장치 관리 기능
- 채널 등의 제어장치 및 입출력장치와 같은 각종 장치의 상태 추적 / 저장
- 장치를 할당하는 데 어떤 방법이 효율적인지 결정, 만약 장치가 공유되는 것이라면 어떤 프로세스가 이 자원을 얼마나 사용할 지 결정 (입출력 스케줄링)
- 해당 장치를 할당하고, 입출력 동작 시작
- 입출력 종료 시 자동적으로 자원 회수
- 정보 관리 기능
- 정보의 위치, 사용 여부, 상태 등을 추적 / 관리 (파일 시스템)
- 어떤 작업에게 정보 자원을 사용하도록 할 것인지 결정, 정보 보호를 위한 대책 수립, 접근 제어 방법 제시
- 정보 자원 할당 / 회수
- 프로세스 관리 기능
2. 프로세스 관점
- 프로그램과 프로세스의 차이
- 프로그램 : 디스크에 저장된 실행 코드
- 프로세스 : 프로그램이 구동되어 프로그램과 프로그램의 상태가 메모리 상에서 실행되는 작업 단위
- 하나의 작업이 제시되어 완료될 때 까지 하나의 프로세스에 대해 그 상태를 변환시키고 관리
3. 계층 구조 관점
- 커널 (kernel) : 확장된 기계 개념으로 운영되는 모든 운영체제 모듈을 총칭

- 커널의 구성 레벨
- 레벨 1 : 프로세서 관리 하위 모듈 (동기화 프리미티브, 프로세스 스케줄러)
- 레벨 2 : 기억장치 관리 (메모리 할당 및 회수)
- 레벨 3 : 프로세스 관리 상위 모듈 (메시지, 프로세스의 생성 및 제거)
- 레벨 4 : 장치 관리 (입출력 트래픽 제어기)
- 레벨 5 : 정보 관리 (파일 시스템)
입출력 프로그래밍
- 왜 필요한가?
- CPU와 입출력장치의 처리 속도 문제
- 입출력은 CPU와 비동기적으로 수행 (독립적) – 데이터 처리 시간이 일정하지 않음
- 입출력장치와 CPU의 상호 작용을 위해 입출력 프로그래밍 필요
1. BIOS
- 부트 프로세스를 실행시키는 명령어 포함
- 이러한 형태의 컴퓨터칩에 저장된 명령어를 펌웨어(firmware)라고 함
2. 부트 진행 과정 (boot process)
- 파워 버튼을 누르면 부트 로더가 초기화 됨
- POST (Power-On Self-Test) 수행 시작
- 다른 BIOS들이 가동을 위해 초기화 됨
- BIOS가 잠겨 있는 경우 유저가 해당 패스워드 입력
- 간단한 메모리 테스트가 수행되며 여러 parameter가 설정됨
- Plug & Play 기기 초기화
- DMA (Direct Memory Access) 채널을 위한 자원들과 IRQ(Interrupt Request) 할당
- 부트 디바이스들이 정해지고 초기화 됨
- OS가 초기화 됨
3. POST (Power-On Self-Test)
- 컴퓨터에 전원이 공급되었을 때 각종 기기들이 정상 작동하는지 확인하기 위해 BIOS가 진행하는 일련의 진단 시험 과정
4. 버퍼링
- CPU와 입출력장치의 속도 차이를 보완하는 방법 중 하나

- 수행 과정
- CPU는 출력할 데이터를 버퍼에 채운다.
- 버퍼가 다 채워지면 CPU는 채널에게 출력을 지시하고, 자신의 일을 계속한다.
- 채널은 출력을 수행함으로써 버퍼를 비운다.
- 출력을 완료함으로써 버퍼를 다 비우면 CPU에게 알린다.
- 효율적인 처리를 위해 두 개 이상의 버퍼 사용 가능

- 수행 과정
- CPU가 버퍼A를 채운다.
- 다 채우면 채널에게 버퍼A의 출력을 지시한다.
- 버퍼A에 대한 출력되는 무관하게 버퍼B를 채운다.
- 채널은 버퍼A를 비운다.
- 채널은 버퍼A를 다 비웠음을 CPU에게 알린다.
- CPU는 다시 버퍼A를 채우고 채널은 버퍼B를 비운다. (1과 6, 3과 4는 동시에 수행될 수 있다.)
5. 스풀링 (SPOOLing)
- Simultaneous Peripheral Operation OnLine의 준말
- 버퍼링은 주기억장치를 버퍼로 사용하지만, 스풀링은 디스크를 매우 큰 버퍼처럼 사용

6. 채널
- 입출력장치와 중앙처리장치 사이에 있는 입출력 전담 처리기


7. 인터럽트 (interrupt)
- 시스템에 예기치 않은 상황이 발생하였을 때 운영체제에 알리기 위한 메커니즘
- 인터럽트의 종류
- 입출력(I/O) 인터럽트 : 해당 입출력 하드웨어가 주어진 동작을 완료하였거나 오류가 발생하였을 때 CPU에 대하여 요청하는 인터럽트
- 외부 인터럽트 : 시스템 타이머에서 일정 시간이 만료되었거나, 오퍼레이터가 콘솔에서 인터럽트 키를 입력하였거나, 다중 처리 시스템에서 다른 처리기러부터 신호가 온 경우 발생하는 인터럽트
- SVC(SuperVisor Call) 인터럽트 : 사용자 프로그램의 수행 과정에서 입출력 수행, 기억장치 할당, 오퍼레이터 개입 요구 등을 위해 실행 중인 프로그램이 SVC 명령을 수행하는 경우 발생하는 인터럽트
- 기계 검사 인터럽트 : 컴퓨터 자체적으로 발생한 기계적인 장애나 오류로 인한 인터럽트
- 프로그램 에러 인터럽트 : 프로그램의 실행 오류로 발생하는 인터럽트 (0으로 나누는 연산, 보호된 곳에 접근 시도, 권한이 없는 명령어 수행, 스택 오버플로우 등)
- 재시작 인터럽트 : 오퍼레이터가 콘솔에서 재시작 키를 누를 때 발생하는 인터럽트


'Operation System' 카테고리의 다른 글
[OS] 프로세스와 스레드 관리 (0) | 2025.04.30 |
---|
댓글