3-2/OS

OS의 목표와 정의

개발자 덕구🐾 2021. 12. 20. 13:58
728x90

정말 간단하게 배운내용을 정리하려고 한다.

 

http://www.kocw.net/home/m/cview.do?cid=3646706b4347ef09 

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net

우리학교의 OS수업은 바로 리눅스 커널을 이용해 실습하였기에 

습득은 빨랐지만 이론적인 내용을 자세히 알수없는것이 아쉬웠다.

 

그래서 좋다는 수업을 찾아 반효경 교수님의 강의를 찾았고 회원가입하여 수강하고있다.

2022년이 오기전에 완강하는것이 목표다.  [2021 / 12 / 31 완강 완료]

 

 

 

 

OS란 컴퓨터 HW 바로 위에 설치되어 사용자 및 다른 모든 SW와 HW를 연결하는 SW계층을 의미한다.

 

 

 

하드웨어가 가장 밑에 있고 OS 가 있고 그 위에 사용자와 각종 SW가 있다.

그 사용자와 각종 SW가 하드웨어를 잘 사용할수있도록 HW와 SW를 연결하는 것이 OS이다.

 

 

SW가 실행되기위해서는 메모리에 해당 프로그램이 올라와있어야한다.

운영체제는 규모가 굉장히 커서 모두 메모리에 올라가면 메모리 공간의 낭비가 심해진다.

그러므로 항상 필요한 부분만 메모리에 적재되는데 그 부분을 커널이라고 한다. 

좁은 의미의 운영체제이다

=> OS의 핵심적은 부분을 커널이라고하며 메모리에 상주한다. 

 

 

이 OS의 목표는

1) 컴퓨터 시스템의 자원(cpu, 메모리, I/O device)를 효율적으로 관리하는 것이다.

2) 컴퓨터 시스템을 편리하게 사용할수있는 환경을 제공하는 것이다. 

 

 

편리한 환경 제공이란 여러 사용자, 프로그램들이 각각 독자적으로 컴퓨터를

사용하는 것과 같은 "환상"을 제공하는 것이다. 

=>  하드웨어를 직접 다루는 복잡한 부분은 OS가 대행,

사용자 및 프로그램은 자세한 내용은 모르더라도 프로그램을 실행할 수 있도록 해주는 기능

 

 

사용자는 파일이 디스크에 어떻게 어디에 저장되는지 모르지만 OS가 제공하는 편리한 환경(인터페이스)를 통해

파일을 편리하게 저장하고 읽을 수 있는 것이다. 

 

 

편리한 환경 제공보다 자원의 효율적 관리가 더 중요한 핵심기능!

<효율성이 가장 큰 목표이지만 일부가 지나치게 희생되지않게! 형평성도 OS가 고려해야한다.>

 

 

 

어떻게 관리하는데?

-> 실행중인 프로그램들을 짧은 시간씩 cpu를 번갈아가면서 할당해준다.

-> 실행중인 프로그램들의 메모리 공간을 적절히 분배한다.

 

 

 

 


 

 

 

OS는 크게 3가지의 분류기준을 가진다.

1) 동시작업 가능여부 2) 사용자의 수 3) 작업의 처리방식

 

1),2)은 딱 보면 어떻게 구분하겠다를 예상할수있고

3) 작업의 처리방식에는 일괄처리, 시분할, 실시간이 있다.

 

 

 

일괄처리(batch processing)방식은 요청된 작업을 일정량씩 모아서 한꺼번에 처리하는 방식이다

[마치 과거 동사무소 처럼]

 

 

 

여기서 현재 대부분의 컴퓨터는 시분할(time sharing)방식을 이용한다.

하나의 cpu이기에 매 순간 하나의 프로그램만 cpu에서 실행가능하다.

그럼에도 cpu의 처리속도가 워낙 빠르기에 각 프로그램의 cpu의 작업 시간을 작게 쪼개어

여러 프로그램들이 그 시간동안 번갈아가며 cpu에서 실행되는 것을 말한다.  

=> 사용자 입장에서는 여러 프로그램이 동시에 실행되는 것처럼 보인다. 

짧은 응답시간을 가지고 있기에 대화형 시스템(interactive system)이라고도 부른다. 

 

시분할방식은 cpu를 강조하는 단어이고 , 이를 위해선 메모리 공간을 분할해 여러 프로그램들이 메모리 공간에 동시에 올려놓아져야하므로 메모리를 강조하는 단어는 다중프로그래밍 시스템(multi - programming system)이라고 부른다. 

 

시분할은 정확한 시간을 지켜주는 시스템은 아닌반면

 

 

 

실시간 운영체제는 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야하는 시스템에서 사용된다.

시간제약의 중요성에 따라 경성 실시간 시스템, 연성 실시간 시스템으로 나뉜다. 

 

 

 

컴퓨터는 크게

cpu, 메모리, I/O device(안에 디스크 포함) 으로 구성된다.

cpu 스케쥴링, 메모리관리, 파일관리, 입출력 관리 등을 효율적으로 관리해주는 것이 OS의 일이다.

 

* 메모리 : cpu가 직접 접근할 수 있는 컴퓨터 내부의 기억장치

프로그램이 cpu에서 실행되려면 해당 부분이 메모리에 올라가 있어야한다. 

 

 

 

 


 

각 장치마다 장치를 통제하는 일종의 작은 cpu를 컨트롤러(controller)라고 한다.  [HW]

 

그리고 cpu에는 작업공간인 메모리가 있듯이 device controller도 그들의 작업공간인 로컬버퍼가 있어 데이터를 임시로 저장하는 작은 메모리를 가진다. 

 

 

cpu 옆에는 인터럽트 라인이 있어서 cpu가 명령 하나를 수행할 때마다 인터럽트가 발생했는지 확인하고

만약 인터럽트 라인에 신호가 들어오면 하던 일을 멈추고 cpu의 제어권을 OS에게 넘기고 인터럽트에 관련된 일을 수행한다. 

 

 

 

 

 

입출력 (I/O)의 수행

 

모든 입출력 명령은 특권명령으로 OS만 제어할수있다.

즉, 운영체제를 통해서만 I/O에 접근이 가능한것이가.

 

그렇다면 사용자프로그램은 어떻게 I/O에 접근 할수있나?

 

정답은 -> systemcall을 이용하면 된다.

 

 

인터럽트에는 2종류가 있다. 

1) Interrupt(HW의 인터럽트)  : HW가 발생시킨 인터럽트

2) Trap  (SW의 인터럽트) : SW가 발생시킨 인터럽트 

 

Trap은 두가지로 나뉜다.

 

1] Exception : 프로그램이 오류를 범했다

2] systemcall : 프로그램이 커널함수를 호출한다.

 

 

즉 사용자 프로그램이 I/O를 하기위해선 SW 인터럽트인 Trap에서 systemcall을 호출해 

커널함수를 호출하도록 하면된다.

 

systemcall을 정의하자면 사용자 프로그램이 OS의 서비스를 받기위해 커널함수를 호출하는 것이다.

interrupt line을 세팅하고 cpu 제어권을 OS에게 넘겨준다. 

 

 

좀더 자세히 말하면 사용자 프로그램이 OS커널에 직접 접근할 수 없다.

그래서 사용자 프로그램이 직접 인터럽트 라인을 세팅하는 instruction을 내린다.

 

 

cpu는 인터럽트가 들어왔기에 cpu제어권을 OS에게 넘기고 OS내부의 해당 인터럽트 처리루틴을 실행한다.

 

 

 

 

 

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

 

 

반응형

'3-2 > OS' 카테고리의 다른 글

메모리관리  (0) 2021.12.25
CPU 스케쥴링  (0) 2021.12.23
프로세스의 생성(fork, exec,exit)  (0) 2021.12.23
프로세스의 개념  (0) 2021.12.22