본문 바로가기

프로그래밍/운영체제

[운영체제] Introduction to Operating System

 

운영체제 - Introduction to Operating System

 

운영체제 좁게는 커널이라고 하고

커널은 컴퓨터가 켜진 순간부터 꺼질떄까지 메모리에 항상 상주하는 부분이다.

 

넓은 의미로는 커널 뿐만 아니라 여러 시스템 유틸리티도 포함한다

 

메모리에 항상 상주하지 않아도 운영체제라고 말해준다 

 

전공자 입장에서는 운영체제 = 커널로 보자!

 

 

 

동시 작업 가능 여부에 따라서

단일 작업과 다중 작업 으로 나눠진다.

 

 

단일 작업으로 DOS 같은 운영체제와

다중 작업으로 현대의 운영체제들이 나눠진다

 

사용자의 수에 따라서 도 나뉜다.

 

마지막으로 처리방식에 따른 분류

 

 

배치 프로세싱을 한다고 볼 수 있다.

바로바로 하는게 아니라 작업을 모아서 한번에 처리

현대에선 찾아보기 힘들다

 

현대 컴퓨터의 방식이라고 볼 수 있다.

여라 작업이 수행 될 때 여러 작업이 동시에 실행되지만

운영체제가 시간을 나눠서 CPU 를 번갈아가며

각 작업을  처리 한다.

 

짧은 응답시간을 갖는 특징이 있다.

주어진 자원을 최대한 활용한다.

 

시분할과 비슷해보이지만,

개념적으로는 데드라인이 있어서 정해진 시간안에 무조건 결과가 나오는게 보장이된다.

시분할은 일반 범용적으로 사용되는 컴퓨터고 실시간은 특수한 목표가 있는 컴퓨터에서 사용된다,

 

 

 

용어 정리

여러 작업이 동시에 실행되는 것 - 멀티 태스킹

엄밀히 말하면 매 순간은 CPU 에서 1개의 작업만 실행이 된다.

그걸 짧은 순간에 분할을 해서 할당을 하는 것이기 때문에 동시에 실행되는것 처럼 보이는것

이걸 멀티 테스킹이라고 한다.

 

타임 쉐어링 - 시분할

이 프로그램이 실행되다가 저 프로그램이 실행되다가,,

멀티테스킹과 아주 유사한 용어지만, CPU 의 작업을 좀 더 강조한다.

 

4가지 용어가 전부 유사하다.

 

* 멀티 프로세서 - CPU 가 여러개가 있다.

하드웨어적으로 다르다!

CPU 가 여러개면 여러 프로그램이 CPU 에 동시에 들어갈 수 있다.

 

 

 

 

 

간단하게 미리 보는 운영 체제 구조

 

컴퓨터 시스템의 자원들을 표시했다.

 

CPU -

어떤 프로그램에게 CPU 를 할달할 것인가

CPU 스케쥴링

CPU 는 아주 빠른 장치이기 때문에 아주 짧은 시간 간격으로 

프로그램들에게 CPU 를 줬다 뺐었다 하는게 일반적인 스케쥴링 기능이다.

 

먼저 온 순서대로 실행되면 어떤 문제가 있는지 알아 볼 것

긴 작업 하나가 CPU 를 잡고 있으면 뒤에 있는 간단한 작업들은 계속 기다려야한다.

이 빠른 자원을 어떻게 활용할 것인지..

 

 

메모리 -

메모리 공간은 한정되어있는데 여러 프로그램들이 동시에 올라가고 싶어한다.

어떤 프로그램에게 메모리를 얼만큼 할당해야되는가 하는 문제가 생긴다.

- 공평하게 할당하면 문제가 생긴다.

 

CPU 에서 프로그램이 실행되려면 최소한 그 프로그램을 실행하는데 필요한

데이터가 메모리에 올라가있어야하는데

메모리에 너무 조금만 올라가있으면 

디스크에서 읽어와야하고,, 이러면 원활하게 프로그램이 실행되지 않는다.

메모리에 너무 많은 프로그램을 올리기보다는

CPU 에서 원활하게 실행되게 필요한 용량만 올려야한다.

 

나중에 메모리 관리에서 working set 을 배우도록 한다.

일부 프로그램만 메모리에 할당하고 나머지는 디스크에 쫒아낸다.

 

메모리에 새로운걸 올려야하는데 꽉차있으면

어떤걸 쫒아내고 새로운걸 올리나?

CPU 에서 다시 사용할 가능성이 높은건 냅두고 

미래에 사용될 가능성이 낮은걸 쫒아낸다.

 

 

 

디스크 -

디스크에 파일을 어떻게 보관을 하는가

조각조각 나눠서 저장하는게 좋을지

연속적으로 저장하는게 좋을지

 

디스크에서는 접근하려면 기본적으로

디스크 안에 있는 헤드가 움직이면서 데이터를 읽기 때문에

메모리와 쫌 다르다.

디스크에 특성에 맞게 파일을 관리한다.