발달 순서
가장 중요하고 대표적인 몇 가지만 좀더 구체적으로 살펴보자
참고로 발달 과정일 뿐 각 환경마다 다르게 채택하여 사용한다.
1. 일괄 처리(Batch Processing) 시스템
- 가장 먼저 생겨난 시스템
- 작업량이 일정한 수준이 될 때까지 모아두었다가 한꺼번에 처리 , 일반적으로 유사 작업들을 모아서 처리(공통 데이터 활용 목적 <= 메모리 절약)
- 주기억 장치에 기계어로 작성된 프로그램을 적재해 컴퓨터 시스템을 운영
- 컴퓨터 시스템을 중단 없이 효율적으로 사용
이 때는 각 사무실 마다 컴퓨터가 보급되지 않았고 전산실이라고 컴퓨터 방이 따로 있었음. 그래서 행정실에서 직원 월급처리를 한다면 한꺼번에 업무를 모아서 전산실을 가서 처리를 했었음
2. 다중 프로그래밍(Multi Programming) 시스템
3. 온라인(On-Line Processing) 시스템
4. 시간 분할 처리(Time-Sharing Processing) 시스템
- 하나의 CPU를 여러 개의 작업이 정해진 시간 동안 번갈아 사용
- 다중 프로그래밍 시스템과 유사하나, 다중 사용자 개념이 추가
- 다중 프로그래밍: 처리량 극대화 목표
- 시분할: 응답 시간을 최소화 목표
- 라운드 로빈(Round Robin) 방식이라고도 함
- 단일 프로그래밍보다 복잡
- H/W를 보다 능률적으로 사용
- 시간의 단위를 Time Slice 또는 Time Slot이라함
여러 사용자들의 프로그램을 엄청 빠르게 돌아가면서 처리해주니까 그 시간차를 사용자들이 느끼지 못하고 동시에 각자 독립된 컴퓨터를 사용하는 것처럼 느껴지는 것임
5. 실시간 처리(Real Time Processing) 시스템
- 우주 왕복선이나 레이더 추적기 등의 정해진 시간에 반드시 수행되어야 하는 작 업들을 처리
- 한정된 시간 제약조건에서 자료를 분석 처리하는 시스템
- 비행기 제어 시스템이나 교통 제어 등에서 사용
- 실행 결과를 즉시 받아 볼 수 있어 응답 시간이 짧음
6. 다중 모드 처리(Multi Mode Processing) 시스템
- 일괄처리, 시간 분할 처리, 실시간 처리를 모두 수행
7. 분산(Distributed) 처리 시스템
- 각 컴퓨터 시스템은 독립적인 CPU와 메모리를 사용
- 약 결합(Loosely Coupled) 형태의 시스템 운영에 적합
- 하나의 작업을 여러 개의 컴퓨터 시스템이 공동으로 작업
- 통신 회선을 통해 작업들을 모아 중앙 컴퓨터에서 처리
- 클라이언트/서버 운영체제
- 각 시스템은 독립적인 운영체제를 가짐
- 전송 지연이 길고 데이터 처리율이 낮음
흔히 웹 개발영역에서 프론트 엔드 (윈도우), 백엔드 (리눅스, 유닉스) 설치해서 교류 하는 것을 말함
8. 병렬(Parallel) 처리 시스템
- 하나의 메모리를 여러 개의 CPU가 사용하는 컴퓨터 시스템
- 강 결합(tightly coupled) 형태의 시스템 운영에 적합
- 복잡한 수치 연산, 과학 기술 처리에 적합한 방식
운영체제 성능 평가 기준
처리량(Throughput)
- “단위 시간내 얼마나 많이 처리 했는가”의 평가기준
- 처리량이 높을 수록 좋음
반환 시간(Turn-around Time)
- 작업 완료까지의 시간(실행 + 대기시간)
- 요청 작업에 대한 결과의 응답 시간
- 반환 시간이 짧을 수록 좋음
신뢰도(Reliability)
- 결과에 대한 정확하고 믿을 수 있는 기준
- 신뢰도가 높을 수록 좋음
사용 가능도(Availability)
프로세스의 요구 자원에 대한 신속하고 충분한 지원의 정도
운영체제 구성
운영체제도 이전글을 보면 소프트웨어(시스템 소프트웨어)의 하나이다.
그래서 이 소프트웨어를 쪼개어 보면 제어 프로그램, 처리 프로그램으로 나뉘고
제어 프로그램과 처리 프로그램을 또 다양한 큼직큼직 하게 썰어보면 다양한 프로그램으로 나뉜다.
제어 프로그램(Control Program) : 시스템 운영 기능을 수행
• 감시(Supervisor) 프로그램 – 프로세스 동작하고 상태를 감시 및 감독(=모니터(Monitor))
• 데이터 관리(Data Management) 프로그램
- – 주기억 장치와 보조 기억 장치 사이의 자료 전송
- – 파일 조작, 입/출력, 프로그램의 논리적인 연결 등 처리 (Open, Close, Read, Write, (De)Blocking 등)
• 작업 제어(Job Control) 프로그램
- – 프로세서들의 상태를 관리(예: 상태변화)
- – 스케줄 및 시스템 자원 할당 등을 처리
• 통신 제어(Communication Control) 프로그램
처리 프로그램(Processing Program) : 응용프로그램의 동작을 지원
• 언어 번역(Language Translator) 프로그램 – 어셈블러, 컴파일러, 인터프리터, 프리 프로세서(매크로 프로세서 포함)
• 서비스(Service) 프로그램
- – 설명: 효율적으로 사용할 수 있는 사용 빈도가 높은 프로그램
- – 시스템 서비스: 연계 편집기(링키지 에디터), 라이브러리
- – 사용자 서비스: Sort, Merge, 유틸리티
• 문제(Problem 또는 사용자) 프로그램 – 특정 업무를 위해 사용자가 작성한 프로그램
프로세스와 프로세서 차이 란 무엇일까?
운영체제를 공부하는데 있어 이해해야할 프로세서, 프로세스 개념
사실 나도 전공자이지만 이글을 쓰기 이전까지 정확하게 어떤차이가 있는지 설명 할수 없었다
아래 참조 문서를 통해 공부하고 요약해 정리했으며 학교 수업시간에 정리했던 자료를 추가하였다.(우동에 + 새우튀김)
프로세서와 프로세스는 엄연히 다른 존재
하드웨어적 프로세서 개념
Processor (프로세서)는 하드웨어적인 측면에서 "컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛"이다. 이는 중앙처리장치(Central Processing Unit == CPU)를 뜻하며 폰노이만 아키텍쳐에 의해 만들어졌다면 적어도 하나 이상의 ALU (Arithmetic Logic Unit)와 처리 레지스터(Register)를 내장하고 있어야 한다.
소프트웨어적 프로세서 개념 ( 약간 하드웨어적 개념에서 살려는 드릴게 라는 개념으로 보면 된다.)
소프트웨어적으로 프로세서라 함은 데이터 포맷을 변환하는 역할을 수행하는 데이터 프로세싱 시스템(데이터 처리 시스템)을 의미하며 출력 가능한 인쇄물을 생성하는 워드프로세서도 프로세서라 부른다.
조금 애매하긴 합니다만 위의 범주에 포함되는 소프트웨어는 워드프로세서와 컴파일러, 어셈블러 등이 포함됩니다. 프로세서라는 용어의 정의가 명확하게 정의되기 훨씬 이전부터 관습적으로 프로세서라고 부르던 소프트웨어들을 넓은 의미의 프로세서에 포함시켜주는 분위기가 강합니다.
결론적으로 프로세서는 CPU나 Microprocessor 라는 하드웨어를 말하는 것으로 그 범위가 점점 축소되어 명확해져 가고 있습니다.
프로세스란?
프로세스는 말 그대로 "절차(과정)" 입니다. 때문에 스스로 무언가를 처리하지 못합니다.
프로세스는 특정 목적을 수행하기 위해 나열된 작업의 목록이라고 생각하여야 합니다. 즉 프로그램.
컴퓨터에서 프로그램은 프로그래밍 언어로 작성된 작업 수행 과정일 분입니다.
프로그래머가 작성한 소스코드와 소스코드가 컴파일되어 기계어로 번역된 바이너리파일도 그저 작업 과정이 기록된 파일일 뿐임
작업의 과정이 파일로 저장되어 있으면 그것을 "프로그램"이라고 부르고
메모리에 적재되어 실행 중 이거나 실행 대기 중일 땐 "프로세스"라고 구별하여 부를 뿐입니다.
즉 프로세스는 "메모리에 적재되어 프로세서에 의해 실행중인 프로그램" 이라고정의하는 것이 정확할 것입니다.
"프로세서에 의해 실행 중인 프로그램"의 의미를 이해해야 한다.
프로세스 상세 개념
- 운영체제 작업의 단위: = 태스크 = 작업(job)
- CPU에 의해서 현재 실행되고 있는 프로그램 • CPU가 할당되는 실체
- 운영체제는 PCB(Process Control Block, 프로세스 제어 블록)로 관리
- 프로세서가 할당되는 개체로 디스패치(dispatch)가 가능한 단위
- 지정된 결과를 얻기 위한 일련의 계통적 동작
- 목적 또는 결과에 따라 발생하는 사건들의 과정
- 프로시저(예: 함수)가 활동 중인 상태 • 실행중인 프로시저 ex C언어 main() 함수
- 비동기적 행위(이벤트 처리)를 일으키는 주체
프로세스의 3가지 상태
프로세스 는 3가지 상태로 나뉘어 질 수 있습니다. R.R.B 로 외우면 쉬울것입니다.
3가지 상태 ※ 목적: 다중 프로그래밍을 위함!!
준비(Ready) 상태
• 언제든 CPU를 점유할 수 있는 상태
• 프로세스가 CPU 점유를 위해 기다리는 상태
• 실행을 위해 일시적으로 주어지는 상태
실행(Run) 상태
• CPU를 점유하고 있는 상태
• 명령이 실행되고 있는 상태
대기(Block, Wait, 보류) 상태
• 예약한 사건(Event)이 발생하기를 기다리는 상태
• I/O 작업 대기 상태
• 외부적 사건이 생길 때까지 실행할 수 없는 상태
추가 참고 자료 출처 (더 읽어 보면 좋을거라고 생각합니다)
https://overcome-the-limits.tistory.com/118
'자료구조, 운영체제, 네트워크, 시스템설계 > NCS' 카테고리의 다른 글
운영체제 기술면접 준비6: 가상 기억장치 구역성, 관리 전략, 교체 알고리즘 (0) | 2022.10.10 |
---|---|
운영체제 기술면접 준비5: 메모리(RAM) 관리, 가상 기억장치, 실 기억장치, 단편화, 페이징, 세그멘테이션 (0) | 2022.10.10 |
운영체제 기술면접 준비4: 임계구역, 교착상태 (0) | 2022.10.10 |
운영체제 기술면접 준비3: 스풀링, 버퍼링, 인터럽트, 문맥교환, 스케줄링 (0) | 2022.10.09 |
운영체제 기술면접 준비1 :컴퓨터 시스템의 구성, 운영체제 개념, 시스템 소프트웨어란? (0) | 2022.10.08 |