본 게시물은 운영체제 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시물입니다.
운영체제의 필요성과 목적
- 한정된 자원과 사용자 사이의 경쟁을 조율하기 위한 운영자의 정책이 필요하다.
# 운영체제의 목적
- 사용자 관점에서의 편의성 추구
- 자원 할당자로서 자원 활용의 효율성 추구
- 다양한 입출력 장치의 운영 및 제어의 일관성 추구
초기시스템
- 기계어 프로그램을 주로 카드 천공기를 이용해 펀치카드에 기록하거나 자기테이프에 기록
- 프로그래머가 Sign-Up Sheet에 원하는 시간을 표시(예약)
- 프로그래머가 콘소리나 스위치를 이용해 모든 작업 수행
- 펀치카드 박스나 카드덱의 내용을 카드리더기에 적재
- 콘솔을 통해 프로그램 수행/디버깅
- 카드덱 형태의 라이브러리 사용 - 활용도 비효율 (남는시간 발생) / 준비 시간 과다
- 편의성은 높으나 효율성은 매우 낮다
- 하드웨어 가격이 비싼 시기였기에 효율성 증진에 많은 노력 투입
초기일괄처리시스템
- 운영자를 고용해 사용자의 작업을 전문적으로 대행
- 사용자들이 요구하는 비슷한 작업들을 함께 묶어서 배치(Batch)로 처리
- 배치는 별도의 오프라인 카드리더나 테이프에 수록되고, 처리 결과도 별도의 오프라인 카드리더나 테이프에 수록되고, 처리 결과도 별도의 오프라인 테이프를 통해 프린터로 출력됨
- 배치라는 일괄처리 작업을 취급하는 것은 사람(운영자)
- 효율성 위주 - 주컴퓨터가 실행되는 동안 또다른 Batch 입력 가능
- 운영자에 대한 의존도가 ↑
일괄처리시스템
- 채널
- 명령어, 레지스터 및 입출력 제어장치로 구성
- CPU와 함께 메모리를 공유
- CPU로부터 명령을 받아 CPU와 독립적으로 입출력 실행
(단, 메모리 사이클 경쟁 제어 필요) → DMA - 버퍼
- CPU와 채널 입출력의 병렬 수행을 위해 데이터 버퍼를 사용
- 연산하는 동안 읽거나 쓰는 것이 가능하게 되어 입출력 대기시간을 없앰 - 인터럽트
- 사용자 프로그램이 아니라 하드웨어에 의해 자동으로 메모리 특정 부분에 있는 함수를 호출
- 입출력의 완료와 예외동작 처리
( 파일종료, 테이프 끝, 패리티 오류 등)
- 채널을 통한 입출력 버퍼링을 CPU와는 독립적으로 수행토록 하는 핵심 수단
- cf) 트랩 : 일종의 소프트웨어 인터럽트 - 상주 모니터
- 인터럽트 처리기 또는 입출력 관리자를 메모리에 영구적으로 상주시켜야 할 필요성 대두
- 작업 제어 명령어, 적재기 , 작업 순서 제어기를 상주시켜 컴퓨터의 운영을 좀 더 자동화시킴 - 보호
: 잘못된 사용자 프로그램이 상주모니터 영역에 접근해 덮어쓰는 일이 빈번히 발생함에 따라 상주모니터 보호의 필요성 대두
- 모든 프로그램이 입출력을 직접 하지 않고 상주모니터의 루틴을 호출하도록 → 시스템 콜 대동 - 장점
- 초기 일괄처리 시스템에 비해 효율성 개선됨
- 하나의 작업이 CPU를 독점하므로 해당 작업으로 볼 때는 처리 속도가 가장 빠르다 - 사용자의 애화가 필요 x ㅣ 수치계산, 대용량 데이터 처리
- 아쉬운점
- 질의응답이 많거나 에디터 같이 사용자와 빈번한 대화가 필요한 대화형 응용 프로그램에서는 사용이 어렵다 - 입출력 장치와 CPU가 간섭없이 서로의 작업을 함
- 입출력 장치가 약속된 장소에 메모리 직접 접근해 입출력 끝내도록하고, 끝나면 CPU에 알려 다음 작업을 지시
다중프로그래밍
- 한 시점에 여러 프로그램을 사용자 영역에 탑재 , 번갈아 가며 실행
- 시스템에 들어오는 모든 작업은 일단 작업 풀에 적재됨
- 작업풀 내의 작업은 운영체제의 정책에 따라 선택되어 메모리에 탑재 - 탑재된 작업 중 하나를 선택해 실행
- 실행하다 보면 궁극적으로 입출력이 발생
(키보드 입력을 기다리거나 출력이 끝나기를 기다리는 상태에 도달) - 한 프로그램이 입출력을 하는 동안 다른 프로그램을 선정해 CPU가 실행
- 스케쥴링이 일어나는 시점 : 수행 중이던 프로그램에서 입출력이 일어날 때에만
- 대부분 프로그램의 실행 시간에서 CPU의 사용 시간은 극히 일부분이고 나머지는 입출력 시간이다.
- 한 프로세스의 입출력 시에 다른 프로세스를 처리할 수 있게 되므로, CPU가 항상 일을 하고 있게됨 → 효율적
- 디스크를 이용한 버퍼링과 스풀링으로 입출력과 CPU 수행의 중복 정도 ↑
# 버퍼링 : 메모리 버퍼를 이용해 입출력과 CPU의 속도 차를 해소해 독립된 동작을 허용
# 스풀링 : 하나의 순차적 처리장치를 여러 프로세스가 디스크를 활용해 동시에 공유할 수 있도록 하는 기능 제공
시분할시스템
- 시분할 시스템의 핵심은 타임슬라이스
- 타임슬라이스가 도래하면 무조건 스케쥴링을 시행
- 사용자와의 대화성을 증진시켜 결과적으로 효율성에 편의성까지 증진
- 대화식 응용프로그램의 경우 CPU 사용 시간은 소량인 반면 빈번한 입출력 요구
- 시분할 시스템으로 이러한 빈번한 입출력이 가능하게 됨에 따라 대화성 증대
- 여러 사용자가 개인용 모니터를 통해 한 시스템에 동시에 연결해 동시 사용이 가능해짐
- 사용자가 마치 컴퓨터를 독점하고 있는 듯한 착각을 만들어줌 - 여러 프로그램의 동시 적재로 메모리 부족 야기
실시간시스템
- 프로그램의 동작에 엄격한 마감시간이 요구되는 분야가 있으며, 실시간 시스템은 이러한 요구를 만족
- 경성 실시간성
: 데드라인 위반사건 발생 시 재앙적 사건이 발생
- 데드라인을 100% 준수한다는 것을 증명해야함 - 연성 실시간성
: 데드라인은 존재하지만 위반 시 재앙까지는 야기 x
- 우선순위 제어로 해결하는 경향
'LECTURE > [2021-1] 운영체제' 카테고리의 다른 글
[운영체제] 6. 상호작용 프로세스와 동기화 (0) | 2021.06.17 |
---|---|
[운영체제] 5. 실시간 스케쥴링 (0) | 2021.06.17 |
[운영체제] 4. 프로세스 스케쥴링 (0) | 2021.06.17 |
[운영체제] 3. 프로세스 (0) | 2021.06.15 |
[운영체제] 2. 컴퓨터구조와 OS 연계 (0) | 2021.06.15 |