1. 멀티 프로세싱


- 여러 개의 CPU가 여러 개의 프로세스를 동시에 처리하는 방법


2. 멀티 프로그래밍


- 한개의 CPU가 여러 개의 프로세스를 동시에 처리하는 방법



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

[OS]데드락(Dead lock)  (0) 2018.08.27
[OS]프로세서 스케줄링의 종류  (0) 2018.08.26
[OS]컴파일러 & 인터프리터  (0) 2018.08.25
[OS]링커 & 로더  (0) 2018.08.25

교착상태(데드락)


- 데드락은 두 개 이상의 프로세스나 쓰레드가 서로 자원을 기다리면서 무한히 기다리게 되는 상태를 말합니다.


* 데드락을 피하는 방법

  • 상호배제 : 하나의 자원을 특정 시기에 하나의 프로세스/쓰레드만 소유할 수 있는 형태
  • 자원점유 : 하나의 자원을 소유하고 다른 프로세스 혹은 쓰레드의 자원을 요청하는 상태
  • 선취 불가능 : 하나의 프로세스/쓰레드에게 주어진 자원은 해당 프로세스/쓰레드가 스스로 놓기 전에는 놓게 만들 수 없는 상태
  • 순환대기 : 두 개의 프로세스/쓰레드의 경우, A->B, B->C, C->A에게 서로 자원을 요청하고 기다리는 상황으로 서로 꼬리를 물고 기다리는 상황

   

4가지 중 하나라도 불충족하면 데드락이 발생하지 않음.


http://includestdio.tistory.com/12

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

[OS]멀티 프로세싱과 멀티 프로그래밍  (0) 2018.09.01
[OS]프로세서 스케줄링의 종류  (0) 2018.08.26
[OS]컴파일러 & 인터프리터  (0) 2018.08.25
[OS]링커 & 로더  (0) 2018.08.25

비선점(Non-Preemptive) 스케줄링


- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

- 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때가지 CPU사용

- 장점 : 모든 프로세스에 대한 요구를 공정하게 처리할 수 있음

  단점 : 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우가 발생할 수 있음



선점(Preemptive) 스케줄링


- 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 

  있는 스케줄링 기법

- 선점을 위해 시간 배당을 위한 인터럽트용 타이머 클럭이 필요함

- 장점 : 우선순위가 높은 프로세스를 빠르게 처리할 수 있음

  단점 : 선점으로 인한 많은 오버헤드를 초래함



https://m.blog.naver.com/PostView.nhn?blogId=bestheroz&logNo=105116025&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F


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

[OS]멀티 프로세싱과 멀티 프로그래밍  (0) 2018.09.01
[OS]데드락(Dead lock)  (0) 2018.08.27
[OS]컴파일러 & 인터프리터  (0) 2018.08.25
[OS]링커 & 로더  (0) 2018.08.25

컴파일러


 - 고급 언어로 작성된 소스 프로그램 전체를 목적 프로그램으로 번역 후, 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행

   프로그램을 생성

 - 번역 과정이 번거롭고, 번역 시간이 오래 걸리지만 실행 속도가 빠름

 - C/C++등이 컴파일러를 사용함


인터프리터


 - 고급 언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역하고, 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행시 

   키는 프로그램

 - 줄 단위로 번역 실행되기 때문에 시분할 시스템에 유용함

 - 프로그램이 직접 실행되므로 목적 프로그램이 생성되지 않음

 - 번역 속도는 빠르지만 실행 속도는 느림

 - BASIC, JavaScript등이 인터프리터를 사용함



http://hieroglyph.tistory.com/4

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

[OS]멀티 프로세싱과 멀티 프로그래밍  (0) 2018.09.01
[OS]데드락(Dead lock)  (0) 2018.08.27
[OS]프로세서 스케줄링의 종류  (0) 2018.08.26
[OS]링커 & 로더  (0) 2018.08.25

링커 


- 언어 번역 프로그램이 생성한 목적 프로그램들과 라이브러리, 또 다른 실행 프로그램(로드 모듈)등을 연결하여 실행 가능한    로드 모듈을 만드는 시스템 소프트웨어입니다.

- 연결 기능만 수행하는 로더의 한 형태로, 링커에 의해 수행되는 작업을 링킹(Linking)이라 한다.


ex) 컴파일 가능한 A.cpp, B.cpp, C.cpp가 있다면, 컴파일 과정을 통해 A.obj, B.obj, C.obj를 만듭니다. 그리고 Excutable file을 

만들기 위해  A.obj, B.obj, C.obj를 연결하는 과정을 '링커'라고 합니다.



로더


- 컴퓨터 내부로 정보를 들여오거나, 로드 모듈을 디스크의 보조기억장치로부터 주기억장치에 적재하는 시스템 소프트웨어.



http://yimoyimo.tk/Linker-and-Loader/

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

[OS]멀티 프로세싱과 멀티 프로그래밍  (0) 2018.09.01
[OS]데드락(Dead lock)  (0) 2018.08.27
[OS]프로세서 스케줄링의 종류  (0) 2018.08.26
[OS]컴파일러 & 인터프리터  (0) 2018.08.25

+ Recent posts