운영체제의 종류가 무엇이 존재하며 무슨 목적을 가지고 있는지 알기 전에 운영체제가 무엇인지 알고 넘어가볼게요~

 

윈도우 종류라면,,, windows7, windows8, windowsXP 등등 여러분은 어느 세대의 윈도우를 지나왔나요? ^^ 저도 window xp시대 입니다~. 이 외에도 운영체제라면 대표적으로 유닉스, 리눅스 등이 있어요. 보통 윈도우를 사용하기 때문에 리눅스가 사용되는 것을 본적이 없는 분들도 있지만 Computer와 관련한 분들은 한번씩 들어본 Ubuntu 또한 리눅스 배포판 중 하나입니다. 그렇다면 운영체제란 무엇일까요??

OS(운영체제)는 무엇인가?

"An Operating System is a program that managers a computer's hardware"

>>컴퓨터 하드웨어를 관리하는 프로그램입니다.

 

  • 컴퓨터를 시스템의 각종 하드웨어적인 자원과 소프트웨어적인 자원을 효율적으로 운영 관리함으로써 사용자가 시스템을 이용하는데 편리함을 제공하는 시스템 소프트웨어이다.
  • 사용자에게 편리함을 제공하고 시스템의 생산성을 높여주는 역할을 한다
  • 운영체제는 사용자가 응용 프로그램을 편리하게 사용하고 하드웨어의 성능을 최적화 할 수 있도록 한다
  • 운영체제는 모든 하드웨어와 소프트웨어를 관리하는 컴퓨터 시스템의 한 부분인 "실행 관리자"라고 정의할 수 있다.

즉, 프로그래머가 컴퓨터 하드웨어를 모르더라도 컴퓨터를 쉽게 만들 수 있도록 지원해주는 소프트웨어가 운영체제입니다

OS(운영체제)의 기능

  • 주기억장치, 처리기, 주변 장치 등의 자원을 관리하는 기능이 있다.
  • 입출력 관리 및 파일 관리 기능이 있다.
  • 사용자에게 편의성을 제공한다.

운영체제의 일은 컴퓨터 하드웨어를 관리하는 것!

1. 컴퓨터 하드웨어를 사용하려는 사람들, 프로그래머들이 하드웨어를 모르더라도 할 수 있도록!!

2. 컴퓨터 하드웨어를 놀리지 않고 효율적으로 사용할 수 있도록 

OS(운영체제)의 목적

 처리능력(Throughput) 

시스템의 생산성을 나타내는 단위로, 일정 시간 동안 처리하는 일의 양 

 응답시간(Turnaround Time)

 작업 의뢰 후 시스템에서 결과가 얻어질 때까지의 시간 

 신뢰도 (Reliability)

 주어진 문제를 얼마나 정확하게 처리하는가의 정도 

 사용 가능도(Availability)

 시스템을 얼마나 빠르게 사용할 수 있는가의 정도 

 

즉 운영체제의 목적은 처리능력의 향상, 응답시간의 최소화, 사용 가능동의 향상, 신뢰도의 향상입니다.

OS(운영체제)의 구성

  • 운영체제는 제어프로그램(Control Program)과 처리프로그램(Process Program)으로 구성됩니다.

운영체제라는 시스템은 컴퓨터 안의 정보들과 자원들을 제어하고 상태를 감시하고 실행하는 과정을 지시하고 관리하는 제어 프로그램과

제어 프로그램의 지시와 감독을 받아서, 실제로 데이터 처리를 실행하고 결과를 보여주는 처리 프로그램으로 이루어져있습니다.

 

1. 제어 프로그램

각종 처리 프로그램의 실행과 기억장소 및 데이터 제어 또는 연속 처리 작업의 스케줄링 등 감시하는 기능을 수행하며, 데이터 관리 기능, 작업 관리 기능, 태스크 관리 기능을 갖습니다.

  감시 프로그램

 *시스템 전체의 동작 상태를 감독하고 지원함. 제어 프로그램의 중추적 역할을 담당함.

 * 시스템의 모든 동작 상태를 관리하고 감독하는 제어프로그램을 슈퍼바이저(supervisor)라고

 한다.

  작업 관리 프로그램

 * 어떤 작업을 처리하고 다른 작업으로의 자동적 이행을 위한 준비와 처리를 수행함 

  데이터 관리 프로그램

 * 주기억 장치와 외부 보조 기억 장치 사이의 데이터 전송,

 입출력 데이터와 프로그램의 논리적 연결, 파일 조적 및 처리 등을 담당함 

 

2. 처리 프로그램

제어 프로그램 감시하에 컴퓨터의 특정한 문제를 해결하기 위해 필요한 여러가지 기능을 처리할 수 있도록 해주는 프로그램입니다. 회사 측에서 제공해주는 프로그램과 사용자가 작성한 문제 해결 프로그램이 있습니다.

  언어 번역 프로그램

 * 원시 프로그램을 컴퓨터가 알 수 있는 기계어로 번역시키는 프로그램

 * 종류 : 컴파일러, 어셈블러, 인터프리터 등

  서비스 프로그램

 * 시스템에서 사용 빈도가 높은 프로그램을 미리 개발하여 놓은 프로그램

 * 종류 : 연계 편집 프로그램, 로더, 디버깅 프로그램, 정렬/병합 프로그램, 라이브러리 등

  문제 처리 프로그램

 * 컴퓨터 사용자가 필요한 업무에 맞게 개발한 프로그램

 * 종류 : 급여 관리, 인사 관리, 회계 관리 등 

 

 

출처 : https://jhnyang.tistory.com/16?category=815411

'CS > OS' 카테고리의 다른 글

운영체제 - PCB(Process Control Block)란?  (4) 2020.03.02

PCB란?

  • 운영체제가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳으로, 프로세스의 상태 정보를 저장하는 구조체이다.
  • 프로세스 상태 관리와 문맥교환(Context Switching)을 위해 필요하다.
  • PCB는 프로세스 생성 시 만들어지며 주기억장치에 유지된다.

자, 여러분 운영체제는 하드웨어가 효율적으로 동작할 수 있도록 관리해주는 결국 소프트웨어인 프로그램입니다. 따라서 운영체제라는 프로그램이 프로세스를 하나 만들어서 실행을 하려면 그 프로세스와 관련된 데이터 구조가 당연히 있어야 할 것이고, 프로세스가 뭔지 알아야! 정말 기본적인 정보들은 어딘가에 저장이 되어 있어야 할 것 아닌가요? 그곳이 바로 PCB(Process control block)입니다.

 

"Each process is represented in the operating system by a process control block - also called a task control block. A PCB contains many pieces of information associated with a specific process."

 

예를 들어, CPU에 급한 프로세스 처리때문에 긴급 요청이 왔을 때 기존에 작업하던 프로세스를 어딘가에 임시 저장을 해놓아야 급한 애를 빨리 처리한 후에 다시 불러올 수 있겠죠. 즉 프로세스 관한 정보들을 저장할 어딘가의 공간이 필요해요. 그것이 PCB입니다~

즉, PCB란 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓을 수 있는 저장 장소를 뜻합니다

 

그렇다면 쉽게 생각해봅시다. 우리가 하고있던 일을 잠시 정지시키고 급한 우선순위 일을 먼저 처리하려고 한다면, 우리가 기억할 수 있도록 하는 모든 정보를 저장해 놓아야 하죠? 그리하여 어떤 CPU, Process 부터 프로세스 상태, 스케줄링까지 다시 시작할 수 있도록 도와주는 모든 정보를 불러와야 할것입니다. 그렇다면 PCB에 저장되는 종류는 무엇이 있는지 알아보겠습니다.

 

PCB에 포함되는 정보

  • (1) Process ID : 프로세스를 구분하는 ID
  • (2) Process State : 각 State 들의 상태를 저장한다.
  • (3) Program Counter : 다음 Instruction주소를 저장하는 카운터. CPU는 이 값을 통해 Process 의 Instruction 을 수행한다.
  • (4) Register : Accumulator, CPU Register, General Register 등을 포함한다.
  • (5) CPU Scheduling Information : 우선 순위, 최종 실행시간, CPU 점유시간 등이 포함(***)된다.
  • (6) Memory Information : 해당 프로세스 주소공간(lower bound ~ upper bound) 정보를 저장.
  • (7) Process Information(페이지 테이블, 스케줄링 큐 포인터, 소유자, 부모 등)
  • (8) Device I/O Status(프로세스에 할당된 입출력 장치 목록, 열린 팔린 목록 등)
  • (9) Pointer : 부모/자식 프로세스에 대한 포인터, 자원에 대한 포인터
  • (10) Open File List : 프로세스를 위해 열려있는 파일의 리스트

Context Switching에서의 PCB 역활

CPU내의 프로세스가 작동되는 과정을 자세히 살펴볼게요~ 이 과정에서 운영체제 선행과정으로 필요한 컴퓨터 구조의 개념이 들어갑니다. 컴퓨터 구조에서 레지스터의 개념이 모르시는 분은 공부하고 오시면 이해가 수월해져요 

 

프로그램 카운터, 스택 포인터, 레지스터 이런 것들이 CPU안에 있는 레지스터였던 것까지는 기억하고 계시나요? 이렇게 레지스터들이 CPU 자체에 있으니 running 상태의 프로세스 정보는 CPU 내부, 즉 레지스터에서 저장하고 있습니다.

 

process P0가 지금 수행이 되고 있다고 가정하면!!. CPU에 있는 레지스터들은 P0의 상태로 수행이 되고 있습니다. 그러다 interrupt가 걸리고 운영체제가 수행이 되야 하지만 인터럽트가 걸리면 지금 수행되는 것을 먼저 저장합니다.

 

프로세스 상태에서 배웠듯이, waiting 상태로 변하게 되면 CPU가 다른 프로세스를 running으로 바꿔 올려버려요.

(인터럽트가 걸렸다는 것은 지금 내가 running하는 프로세스를 잠깐 내려놓고 다른 프로세스를 실행하는 동안 기다리게 한다는 뜻인거죠~)

 

레지스터의 저장 값이 앞으로 수행할 프로세스에 관한 정보로 교체될 거예요. CPU는 레지스터에 있는 정보를 보고 처리작업을 수행하니까 당연히 새 프로세스 실행을 위해 기존 프로세스 정보는 다른데로 가야겠죠? 즉 CPU의 레지스터들의 값이 다른 것로 바뀌기 전에 어딘가에 저장을 하고 나가야해요.

 

이때 PCB에 CPU에서 수행되던 레지스터 값들이 저장이 됩니다. 내가 수행하던 프로세스가 어디까지 수행됐는지(Program Counter), Stack pointer의 위치가 어디인지, 그 외 Register들의 집합 정보들을 잠시 저장한다는거죠. 어디에? PCB에!!!!!!!

 

그림을 보면 executing되다가 다른 프로세스 P1을 수행시키기 위해 PCB0에다가 P0프로세스 정보를 저장하네요. 그리고 레지스터에 PCB1에 저장되어있던 process 1 정보를 가져와 P1을 수행시킵니다.

 

이런 저장 공간을 PCB라고 하고 사실 이렇게 수행중인 프로세스를 변경할 때 레지스터에 프로세스의 정보가 바뀌는 것Context Switching (문맥교환)이라고 합니다.

 

즉, Context Switching 문맥교환 이란 CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정을 말합니다. 프로세스가 준비 -> 실행, 실행 -> 준비, 실행 -> 대기 등으로 상태 변경될 때 발생합니다.

 

출처: https://jins-dev.tistory.com/entry/PCBProcess-Control-Block-개념-정리 , https://jhnyang.tistory.com/33

'CS > OS' 카테고리의 다른 글

운영체제 - 운영체제 종류와 목적  (0) 2020.03.03

+ Recent posts