operation system - 1

장윤성·2022년 6월 27일
0

history of operation system

process vs program

  • process : 사용자가 프로그램을 더블클릭해서 실행하게 되면 운영체제가 그 프로그램을
    실행시켜줘야 한다. 그 프로그램을 실행시키는 주체 그것을 프로세스라고 한다. 다른 말
    로 instance라고 부르기도 한다.
  • program : 쉽게 말하면 프로그램은 실행 파일이다. 파일 시스템에 존재하는 실행 파일을
    프로그램이라고 한다.

즉, 프로그램을 실행하게 되면 CPU를 차지하면서 수행하는 수행 주체가 프로세스이다.
프로그램은 하나지만 이 프로그램을 실행하는 instance는 여러개 생길 수 있다

Batch system

1950년대까지 hardware의 가격이 인건비보다 훨씬 비쌌기 때문에, 사람들은 어떻게 효율적으로 기계를 사용할지에 대해서 고민을 했다. 물론 os가 없었기 때문에 기계언어로 프로그램을 만들어야했을뿐만 아니라 디버깅도 offline으로 진행해야만 했다.

slow job-to-job transition

1960년대에 들어와서 프로그램을 일정한 묶음으로 처리해 효율적으로(그나마) 프로그램을 처리하는 batch processing이 나오게되었다. 설정과 중단하는 시간을 줄이면서 cpu utilization을 향상시켰다.
이 당시에는 모니터가 간단한 sceduler의 기능을 담당했는데, memory protection, timer, interrupt 등 여러 기능을 수행했다.

(a)에서 사람이 수행하는 setup과 takedown과정을 batch system(b)을 통해 batch내의 job들은 setup, takedown과정을 수행하지 않도록 함으로써 cpu utilization을 높였다.

하지만 batch내에 job이 하나밖에 없는 경우에는 여전히 overhead가 발생했다. 또한 I/O 수행을 할 때는 다른 job을 수행 할 수 없는 문제점이 아직까지 남아있었다. 이 문제는 해결하기 위해 나온 새로운 batch processing이 있었는데, 이것이 바로 multiprogramming batch processing이다.

Multiprogramming batch processing

  • 여러 user들이 system을 공유하게 됨 : processor가 job 사이를 switch할 수 있어야함
    -> 효율성을 위해 임의로 processor들의 순서를 바꾼다.
  • Simultaneous Peripheral Operations Online(SPOOL) : cpu의 명령을 RAM에 저장하고 그 명령을 주변장치로 전달하여 처리하는 방식이다.(직접 연결하면 서로의 처리 속도가 다르기 때문에 대기시간이 발생한다.) -> cpu utilization이 향상됨
  • concurrent programming이 필요해졌다. -> 실행중인 process를 기다리는 동안 cpu는 멈춰있으면 안되기 때문이다.

concurrent : 서로 독립적인 여러 개의 process를 수행한다.
다만, cpu는 하나의 process만 실행 할 수 있기 때문에 process를 switching하면서 수행함으로써 여러 개의 process를 수행하는 것 처럼 보이게 한다. 결론적으로 여러 개의 process를 동시에 수행하는 것이 아니라 수행하는 것처럼 보이게 한다.

types of I/O

Synchronous I/O에서 processor는 I/O 작업을 시작하고 I/O 요청이 완료될 때까지 즉시 대기 상태로 전환된다. 즉, I/O 요청이 완료될 때까지 다른 process를 진행 할 수 없다는 것을 의미한다.
반면에, Asynchronous I/O를 수행하는 processor는 적절한 함수를 호출하여 커널에 I/O 요청을 보낸다. 커널에서 요청을 수락하는 경우 호출 스레드는 커널이 I/O 작업이 완료되었음을 스레드에 알릴 때까지 다른 작업을 계속 처리한다. 그런 다음 I/O 요청이 완료되면 이전 작업으로 돌아간 후에 그 작업을 마저 수행한다.

Memory relocation

process들을 어떠한 기준을 통해 memory에 저장해야 할지를 결정해야한다. -> policy

Memory protection

process끼리 저장되어 있는 memory의 sector를 침범하지 않도록 하지위해서 policy가 필요하다. 어떤 process가 이미 할당되어있는 memory에 접근하는 경우에는 interrupt가 발생한다.
( interrupt는 간단하게 os의 에러처리라고 생각하면 편하다. 다음 게시물에서 자세하게 다룰 예정이다. )

Time-sharing processing

1970년대 이후에는 집적회로의 발전으로 cpu의 속도가 엄청나게 향샹되었을 뿐만 아니라 인건비가 hardware의 가격보다 훨씬 더 비싸졌기 때문에 기계를 효율적으로 사용하는 것이 목적이 아니라 사람이 해야하는 일을 최소화하는 것이 목적이 되었다.

  • Batch system의 논리적 확장 : cpu가 자주 process를 switching 해줌으로써 여러 user들이 process가 실행되는 동안에 상호작용 할 수 있게 되었다. -> interactive computing
  • system clock이 interrupt를 발생시킴(time interrupt) : 한 process가 독점적으로 cpu를 점유하는 것을 방지하기 위해서 특정 시간동안 cpu를 점유한 이후에는 interrupt가 무조건 발생하도록 하는 것이다. -> sceduling 파트에서 자세하게 다룰 예정이다.
  • process가 memory공간에 맞아 들어가지 않을 경우에는 memory에 있는 process를 policy를 기준으로 disk로 이동시키는 등 작업을 진행함 -> memory virtualization 파트에서 자세하게 다룰 예정이다.

real time system

  • 주어진 문제를 해결하기 위해서 정해진 시간 처리를 하는 system이다. 즉, 정해진 시간 내에 행동할 수 없을 때 문제가 발생하게 된다. 과 산출에 걸리는 시간에도 적시성을 가지며 외부 자극에도 예측 가능한 방식으로 반응하게 된다.

    적시성 : 디바이스 기기가 열악한 환경에서도 데드라인(deadline) 이내에 논리적으로 도 정확한 출력 값을 산출해 내는 것

Hard real-time system : 제어 작업이 데드라인을 어기는 경우 시스템에 심각한 영향을 주는 Time-critical 속성을 지닌 시스템
ex) 원자력 발전소 제어, 화재 경보 시스템, 항공기, 자동차

Soft real-time system : 제어 작업이 데드라인을 어기더라도 성능에 크게 영향을 주지 않으며, 무효화 처리 또는 복구 등을 통해 재가동을 할 수 있는 시스템
ex) 컴퓨터, 모바일 기기, 네트워크 관련 기기

  • QoS(Quality of Service) : 네트워크(사전에 합의, 정의된 통신 서비스 수준) 상에서 일정 정도 이하의 지연시간이나 손실률을 보장
    (데이터를 목적지까지 빠르게, 일정한 속도로, 신뢰성 있게 보내기 위해 각종 응용프로그램의 송신 수요를 지능적으로 맞추어 준다.) -> 일정 정도의 품질을 보장해 주는 것
profile
소개를 어떻게 한줄로 해요..

0개의 댓글