'공부/운영체제'에 해당되는 글 13건

  1. 2011.06.28 Process Concept
  2. 2011.06.25 2장 System Structures
  3. 2011.06.24 1장 Introduction
공부/운영체제2011. 6. 28. 21:26


process
실행중인 프로그램.
포함하는 것 :
프로그램 코드, 현재상태(PC, 레지스터값), 스택(함수 파라미터, return address, 지역변수), 데이터섹션(전역변수) 
 
프로세스 상태
new(프로세스가 생성되었을 때), running(실행중일 때), waiting(I/O 처리같은 어떤 이벤트가 끝나기를 기다리는 것) ready(실행되기를 기다림. new에서나 waiting 상태에서 ready로 가겠죠.), terminated(프로그램 실행이 끝남)

PCB(Process Control Block)
OS에서 프로세스들을 관리하기 위해 사용하는 자료구조
구성요소
프로세스 상태, Program Counter, CPU registers, CPU 스케쥴링 정보(우선순위, 스케쥴링 큐를 가리키는 포인터 등), 메모리 관리 정보(value of base and limit registers, page table, segment table), 할당된 I/O 장치 리스트, 연 파일 리스트 등.
PCB는 프로세스간 스위칭 할 때 주로 사용한다.

Process Scheduling Queues
OS가 프로세스들을 관리하기 위해 사용하는 큐

종류
Job queue : running중인 모든 프로세스
Ready queue : 상태가 ready인 프로세스 리스트, 큐 헤더가 첫번째, 마지막 PCB 포인터다.
Device queues :  상태가 waiting인 프로세스들. 장치마다 그 장치 사용을 기다리는 큐가 있네.

Context Switch
CPU가 다른 프로세스를 처리하려고 할 때 발생. 기존 프로세스 PCB를 메모리에 저장하고 새로운 프로세스 PCB에서 값을 불러올 때 그 시간 동안 아무일도 못하는 상황. overhead라고 한다.
그래서 이 overhead가 OS성능에 영향을 미친다. 하드웨어 성능 좋으면 빨라지겠고 자주 일어날수록 느려지겠지.

프로세스 생성
부모 프로세스가 자식 프로세스들을 생성한다.
자식 프로세스는 OS로부터 자원을 얻을 수 있고, 또한 부모 자원을 공유할 수 있다.
자식 프로세스가 실행될 때 어떤 부모는 자식이 제 할 일 다하고 끝나기를 기다리고 어떤 부모는 자식이랑 동시에 일을 한다.
자식 프로세스는 부모의 주소공간의 복사값을 가지고 그 공간에 프로그램을 불러온다. 리눅스에서 fork함수가 자식프로세스를 생성하는 거고, exec 함수가 호출되면 자식프로그램이 실행되는 거다. 따라서 exec함수가 실행되기 전까지는 부모프로세스의 복사값을 가지고 있겠지.

Swapper and Init processes
Process 0 (swapper)
Process 1 (init) : 초기화 프로그램이다. 부팅될 때 생성되는 첫번째 user process. 모든 user process의 1대조상. 자식있는 부모가 종료되면 자식은 미아가 되는데 init이 관리 해줌. 
process 2 (pagedaemon) : free memory pool 유지.

프로세스 종료 2가지 경우
정상적인 종료 : 자기 할일 다 했을 때, OS에게 끝내달라고 요청하고 OS는 프로세스에 할당된 자원을 해제한다.
비정상적인 종료 : 다른 프로세스를 죽일 수 있다. SIGKILL 같은 걸로.

프로세스간 협력
실행중인 프로세스들끼리 서로 영향을 끼칠 수 있다.
같이 함으로써 자원을 공유할 수 있고, 계산을 나눠서 해서 빨라질 수 있는 등의 장점이 있다.
프로세스간 어떤식으로 커뮤니케이션을 할 것이고 공유데이터를 어떻게 처리할 것인지에 대한 문제를 생각해볼 수 있다.
예로 Producer-Consumer problem이 있다. producer는 정보를 생산하며 consumer는 정보를 소비한다. 이 두 프로세스는buffer를 통해 커뮤니케이션을 하고 자원을 공유한다. producer나 consumer가 정보를 너무 빨리 생산하거나 소비하면 정보가 꽉 차거나 텅 비게 되는 경우도 발생할 것이다. 서로 이 경우를 알아차리고 기다리게 될 것이다.

Direct/Indirect communication.
커뮤니케이션 방법.
Direct
프로세스들이 서로 이름을 지정해서 메시지를 주고 받는 방식. 채팅처럼 양방향이 될 수도 있고 무전처럼 단방향이 될 수도 있다.
Indirect
메일박스를 통해 메시지를 주고 받는다. 여러 프로세스가 같은 메일박스를 공유하면 서로 메시지를 주고 받을 수 있다. direct는 두 프로세스가 메시지를 주고 받는 반면, 얘는 많은 프로세스와 통신할 수 있다.

Synchronization
메시지가 전달되는 방식은 blocking 또는 nonblocking 이다.
blocking은 synchronization, non-blocking은 asynchronous

Buffering
큐 사이즈가 0이면 Sender는 receiver가 일을 처리할 때까지 기다려야 한다.
큐 사이즈가 메시지를 몇개 받을 수 있으면 sender는 만약 큐가 다 찼을 경우에 기다린다.
큐 사이즈가 무한이면 sender는 기다릴 필요가 없다.

 

'공부 > 운영체제' 카테고리의 다른 글

6장 Synchronization  (0) 2011.07.04
Process scheduling  (0) 2011.07.03
Multithreaded Programming  (0) 2011.06.30
2장 System Structures  (0) 2011.06.25
1장 Introduction  (0) 2011.06.24


Posted by skyjumps
공부/운영체제2011. 6. 25. 18:50


인터럽트
대부분의 운영체제는 인터럽트 방식이다.
하드웨어, 소프트웨어 모두 인터럽트를 발생시킬 수 있다.
인터럽트 진행과정
현재 일을 멈추고 리턴 주소와 프로세서 상태를 시스템 스택에 저장한다.
인터럽트 벡터(모든 서비스의 처리 루틴의 주소들을 포함하는 것)를 참조하여 특정 인터럽트를 처리한다.
인터럽트가 작업중일때는 다른 인터럽트는 끼어들지 못하도록 한다.
작업이 완료되면 이전에 하던 일로 돌아간다.

Synchronous I/O
I/O 작업이 끝날동안 프로세스는 기다려야 함.

Asynchronous I/O 
I/O 작업이 끝나길 기다릴 필요 없이 프로세스가 처리될 수 있다.

Caching
최근 접근한 데이터를 저장하기 위해 빠른 메모리 사용
용량이 작기 때문에 관리정책이 필요.

Dual-mode, I/O protection, Memory protection, CPU protection
프로세스들이 시스템 자원을 공유하기 때문에 서로의 프로세스를 침범하는 문제가 발생할 수 있다.

Dual mode는 user mode와 kernel mode인데 사용자 프로세스가 커널에 침범하지 못하도록 user mode와 kernel 모드로 나눈 것이다. 즉 user 프로그램은 user mode에서 동작하고 커널 모드에 접근할 수 없다. 시스템콜을 호출한다거나 0으로 나눴을 때(예외가 발생하는 경우) 커널 모드로 동작이 된다.
또한 사용자 프로그램이 I/O에 마음대로 접근하지 못하게 한다. 커널을 통해서 접근하도록 한다. (I/O protection)
또한 각각의 프로그램마다 영역을 정해줘서 다른 영역으로 침범 못하도록 한다. (Memory protection)
또한 한 프로그램이 CPU를 독점하는 것을 막기위해 타이머 인터럽트를 발생시키는 등 스케쥴링을 통해 CPU를 관리한다. (CPU protection)

참고 사이트
http://nenunena.tistory.com/41

운영체제 구조
1. 프로세스 관리
프로세스는 실행중인 프로그램이다. 운영체제는 프로세스 생성과 삭제, 중단과 재개, 프로세스 간 동기화나 통신을 맡는다.
2. 메인메모리 관리
3. 파일 관리
4. I/O 시스템 관리
5. 디스크 같은 이차 스토리지 관리
6. 분산시스템일 경우 네트워킹

'공부 > 운영체제' 카테고리의 다른 글

6장 Synchronization  (0) 2011.07.04
Process scheduling  (0) 2011.07.03
Multithreaded Programming  (0) 2011.06.30
Process Concept  (0) 2011.06.28
1장 Introduction  (0) 2011.06.24


Posted by skyjumps
공부/운영체제2011. 6. 24. 22:14


Spooling
 

입력장치가 CPU보다 처리속도가 엄청 느리기 때문에 속도를 보완하기 위해 나온 방식
입출력장치가 보조기억장치에 미리 처리할 내용을 저장해서 프로세스는 입출력장치를 거치지 않고 보조기억장치로부터 읽어서 처리한다.
Spooling은 여러작업을 처리할 수 있다. 예를 들어 한 작업이 출력되는 동안 다른 작업을 불러들일 수 있다.

비교 > Buffering 
Buffering도 CPU와 입출력장치의 속도차이를 보완하기 위한 방법인데 Spooling과 달리 주기억장치에 저장한다.

Multi-programming and Multi-tasking

주기억장치에 여러 프로그램들이 올라가 있고 운영체제가 실행할 프로그램을 선택한다.

von Neumann Architecture

프로그램 메모리와 데이터 메모리가 구분되어 있지 않음 (Harvard Architecture는 메모리가 구분되어 있음)

I/O device controller

I/O device는 컨트롤러를 가지고 있고 CPU는 이 컨트롤러와 정보를 주고 받는다.

운영체제란?

사용자와 하드웨어 중간에서 매개역활을 하는 프로그램

운영체제가 하는 일
 

1) Hardware abstraction
- 프로그래머가 하드웨어의 구체적인 부분을 몰라도 하드웨어에 접근할 수 있도록 한다.
2) Illusion
- time sharing으로 프로세서가 무한한 것처럼
- virtual memory를 이용하여 메모리가 무한한 것처럼
3) Protection
- time-shared scheduling으로 CPU protection
- physical memory와 virtual memory를 분리함으로써 memory protection
- dual mode(User/System)을 사용함으로써 I/O protection

'공부 > 운영체제' 카테고리의 다른 글

6장 Synchronization  (0) 2011.07.04
Process scheduling  (0) 2011.07.03
Multithreaded Programming  (0) 2011.06.30
Process Concept  (0) 2011.06.28
2장 System Structures  (0) 2011.06.25


Posted by skyjumps