반응형

### 강의 소개


운영체제 : 컴퓨터 시스템의 자원을 효율적으로 관리해주는 시스템
하드웨어 바로 위에 있는 소프트웨어
하드웨어를 관리, 하드웨어와 소프트웨어 사이에서 실행을 해준다. (시스템콜)

컴퓨터 시스템 자원: 메모리, 입출력장치, CPU

멀티 프로세스: 아주 짧은 시간 간격으로 CPU를 번갈아 가면서 쓴다.
=> CPU 스케줄링

 

 

 

용어
- 메인메모리 
- 메모리 관리 

 

 




### Introduction to Operating Systems


운영체제: 하드웨어(컴퓨터 시스템의 자원)를 효율적으로 관리, 
컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공

효율성, 형평성 => 자원관리

효율성만 너무 하다보면 특정 프로그램이 불이익을 받지 않도록.. 형평성 있는 자원분배가 필요!

 

 

 


운영체제 분류

동시 작업 가능 여부

- 단일 작업(single tasking)
- 다중 작업(multi tasking)

 

 


사용자의 수

- 단일 사용자(single user)
- 다중 사용자(multi user)
컴퓨터 한대를 계정을 여러개 만들고 여러 사람이 동시에 접근이 가능한지

 

 


처리 방식

- 일괄 처리 (batch processing)
작업을 모아서 한꺼번에 처리 / 역사 속의 시스템.. / interactive 하지 않다. 키보드를 두들겨도 바로 화면에 보이지 않는다
- 시분할 (time sharing)
운영체제가 작은 시간 단위로 나눠서 번갈아가면서 프로그램이 CPU를 사용하는 것 / 사용자 입장에서는 interactive한 방식 / 범용적 / 데드라인이 없음
- 실시간 (real time)
deadline이 있어서 정해진 시간 안에 결과가 나오는 것을 보장해주는 것 / 특수한 목적을 가진 시스템에서 반드시 정해진 시간에 처리하게끔 할 때 사용
hard realtime system : 무조건 정확한 시간에 시행되어야 함 (반도체 공장, 미사일)
Soft realtime system : 데드라인은 있지만 꼭 정확하진 않아도 됨. 

 

 


해당 강의에선 시분할 운영체제를 주로 다룰 것!

 



======================

 

 

유사한 용어
- Multitasking : 태스크가 여러개 도는 것
- Multiprogramming : 메모리에 프로그램이 여러개 동시에 올라가는 것
- Time sharing : 시간을 공유해서 사용, cpu를 강조
- Multiprocess : 멀티 프로세스(실행중인 프로그램)
- Multiprocessor : 프로세서(CPU)가 여러개

 

 

 

 


운영체제의 예  

 

유닉스(Unix)

서버용 컴퓨터 목적으로 만들어짐
어셈블리어로 만듦 (기계어에 가까운 언어: 어셈블리어)
=> 유닉스를 만들기 위해 프로그래밍 언어를 만듦 => 이것이 C 언어!!!
C언어는 고급 언어인데 기계와도 가깝고 사람과도 가깝다

 

코드의 대부분이 C언어로 작성이 됨

높은 이식성 (포터블) - C언어로 작성되었기 때문에 컴파일해서 쓰면 되서 이식성이 크다.
다양한 버전

- System V, FreeBSD, SunOS, Solaris

- Linux

 

공개소프트웨어 정신으로 나온 것이 리눅스이다.

리눅스는 누구나 가져다가 자유롭게 사용할 수 있는 운영체제이다.


* 리눅스 ... 소스 코드가 공개되어 있으니 찾아서 보고싶다

운영체제 강의를 다 본 후에 리눅스 커널 소스코드를 분석해보면 좋을 듯!!

리눅스 커널 공식문서:  https://www.kernel.org/doc/html/latest/index.html

커널 소스코드 다운 : https://www.kernel.org/

 

 

 

DOS

단일 작업용으로 만들었음

메모리 관리 능력의 한계 (주기억장치: 640KB)  -> 메모리 한계로 Windows 등장

 

 

 

 MS Windows 

개인용 컴퓨터 목적으로 만들어짐

GUI 기반 운영 체제

 

 

 

 



유닉스는 소스코드를 무료로 공개함 -> 오늘날에는 대부분 공개되어 있지 않은데 Linux는 공개되어 있음.
DOS, MS Windows는 컴파일한 결과물만 유료로 팔았다

 

 

======================

 

 

 

 

운영 체제의 구조

 

CPU 스케줄링 - 누구에게 CPU를 줄까?

 

하나의 프로그램이 CPU를 점유하고 오랫동안 있으면

뒤의 프로그램들은 그 프로그램이 끝날때까지 기다려야 한다.

=> 따라서 CPU를 효율적으로 쓰기 위해서

CPU 스케줄링은 짧은 시간동안 줬다 뺐었다 하는 방식을 많이 사용한다

 

 

메모리 관리 - 한정된 메모리를 어떻게 나눠서 쓰는가?

 

 

파일 관리 - 디스크에 파일 보관하는 방법?

파일시스템

디스크 스케줄링

 

디스크는 헤드가 움직이면서 데이터를 읽고 쓴다.

헤드의 이동을 고려하면서 효율적으로 처리

 

 

- CPU 스케줄링은 CPU가 너무 빨라서 어떻게 관리할 것인가 라면 

- 디스크 스케줄링은 디스크가 헤드를 움직이면서 처리해야 하기 때문에 어떻게 하면 헤드의 움직임을 최소화하면서 많은 요청을 빨리 처리할 수 있는가

** 하드디스크 헤드 사진 찾아보면 이해됨, 컴퓨터 구조 강의 참고 (https://youtu.be/kFWP6sFKyp0?si=HhR2yM_04InqlQTK)

 

I/O device - 입출력 관리 / 각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하는지?

I/O device는 전송률이 느리기 때문에

전송률이 빠른 CPU와 정보를 주고받을 때 어떻게 할 것인지?

=> 인터럽트에 기반해서 관리하고 있다.

 

 

프로세스 관리 - 실행중인 프로그램(프로세스)를 어떻게 관리할 것인지

 

그 외

- 보호 시스템, 네트워킹, 명령어 해석기(command line intepreter)

 

 

 

 

뭔가 CPU는 팀장님

I/O device는 나 같다

ㅋㅋㅋㅋ 

바쁘게 팀장님이 일을 하시면

나는 중간중간 보고 하면서 인터럽트를 거는...

그러면 이런 요청이 있구나? 하면서 처리해주시는.. ㅋㅋㅋ

 

 

 

 

내가 운영체제다 생각하고 운영체제라면 할 일이 무엇인지를 생각해보자

그러면 운영체제의 내용이 무엇인지 명확히 알 수 있다! 

 

 

 

 

 

 

 


 

강의 : http://www.kocw.net/home/cview.do?mty=p&kemId=1046323

반응형
복사했습니다!