MultiThreading


  • Server Architecture
    - iterative server : 서버가 깨어나서 Message Queue의 내용을 처리하고 처리가 완료되면 다시 Queue의 내용을 확인하여 처리
        *장점 : 단순하고 관리가 쉽다.
        *단점 : 하나의 Process를 사용하기 떄문에 처리속도가 느리다.
    - Concurrent server : Message Queue에서 Request의 처리를 서버가 직접하는것이 아니라 별도의 Worker Process를 두어 처리하게 하는 방식
        *장점 : 다수의 Process를 이용해 처리속도가 빠르다.
        *단점 : 여러 Process를 생산 및 관리해야 되기 때문에 복잡하고 시스템에 부담이 된다.


  • MultiThreading의 목적

- Concurrency(동시 처리)는 높이면서 Execution Unit을 생성하거나 수행시키는데 드는 부담을 줄임
- Massively Parallel Scientific Programming ( 대용량 병렬 프로그래밍 )을 할 때 발생하는 오버헤드를 줄이기 위해


  • Process와 Thread의 관계
    - Process는 Context와 Thread of Control로 이루어져있다.
    - 이때 Process안에 Thread가 여러개 있는 것이 MultiThread이다.

  • MultiThread구현에 필요한 것들
    - 하나의 Process가 여러개의 Thread를 갖게 되므로 Process는 여러개의 Stack을 갖게된다.
    - 여러개의 Thread를 관리하기 위해 Thread ID를 할당 한다.
    - Thread 마다의 정보를 갖고있을 Thread control Block(TCB)을 생성한다.

  • Task
    - Design Time Process
    - Process에게 부여된 자원(Resource)

  • MultiThread의 구현
    1. User-Level 구현
        1. Stack 구현
        2. TCB를 Thread 마다 생성 (User Level에 위치)
        3. Thread 간의 Switching을 위해 Scheduler 구현
            - user Level에 Scheduler 함수 생성
            - 여러 Scheduler함수를 모아 Thread Library로 묶음
            *Thread Library : Thread의 생성 및 소멸, Thread Context저장, Thread간 접근 가능
       

- 문제점 -
    1. 한 Thread가 Blocking System call을 호출하는 경우 해당 process의 모든 Thread가 Block된다.
    2. OS가 Thread에게 직접 Interrupt를 전달할 수 없기 때문에 Preemptive Schedling을 할 수 없다.

2. Kernel-Level구현
    - Kernel의 System call을 이용하여 모든 처리를 한다.
    -장점 : User-Level의 단점을 모드 보완한다.
    - 단점 : Kernel단의 수행시간이 증가되면서 추가적인 오버헤드가 발생한다.



3. Combined User-Level / KernelLevel 구현
    -
 대부분 User-Level에서 처리
    - Interrupt가 왔을 시 Interrupt를 User-Level Scheduler에게 전달
    - Blocking System call 발생 시 해당 Thread를 중지시키고 새로운 Kernel Stack을 할당하여 User Process에 붙여 Return시킨다.


  • POSIX Pthread API
    - 다양한 unix계열 운영체제들의 API를 표준화 하기위해 IEEE가 정의한 인터페이스


  • Thread life Cycle



'프로그래밍 > 운영체제' 카테고리의 다른 글

Process Synchronization  (0) 2016.10.20
CPU Scheduling  (0) 2016.10.15
Context Switching(2)  (0) 2016.10.11
Context Switching(1)  (0) 2016.10.11
Process Scheduling  (0) 2016.10.09

Context Switching


  • Context Switching이란?
    - 현재 수행중인 Process의 Context state를 저장하고 다음 수행 될 Process의 Context state를 불러오는 작업

  • Context Saving
    - Context Swithcing이 일어날 경우 현재 Process의 Context를 저장하는 작업

  • Context 종류 및 Saving유무
    (Context별 설명은 http://winwoo.tistory.com/16 'Program State' 참고)
    - Memory Context : 필요한 Data만 Saving
    - CPU Register Context : 반드시 모든 Data Saving
        -> saving 장소 : 일반적으로 한단계 아래의 저장장치로 데이터를
                          대피시키기 때문에 CPU Register는 Main Memory로 대피
    - Kernel Context : Saving 필요 없음

  • Interrupt Service Routine이 발생 했을 때
     ( Context Switching 발생 -> HW가 실행)
    다음과 같은 순서로 Stack에 저장
    1. Interrupt가 발생하기 전 PSW 저장
    2. Interrupt가 끝나고 돌아올 주소 저장
        - 돌아올 주소는 HW가 PC(Program Count)에서 가져옴


  • 초기 Process 생성 시 Stack 초기화


- Context Switching Mechanism이 동작하기 위해선 한번이라도 Context Switching이 일어나야 된다. 하지만 Process가 처음 생성될 경우 임의의 Stack을 만들어 준다.



'프로그래밍 > 운영체제' 카테고리의 다른 글

MultiThreading  (0) 2016.10.13
Context Switching(2)  (0) 2016.10.11
Process Scheduling  (0) 2016.10.09
Process Concept  (0) 2016.10.09
Computer Hardware  (0) 2016.10.05

Process Scheduling

  • Process Scheduling 이란
    - OS가 여러 Process중 CPU에 할당 할 Process를 정하는 방법

  • Scheduling 구성 요소
    - Policy :
    다음에 수행될 Process를 선택하는 기준
    - Mechanism : CPU를 한 Process에서 다른 Process로 넘겨주는 방법                     (Dispather)

  • Dispatcher
    1. Dispatcher Loop
       
    {
            1.주어진 Process 가동
            2.가동 중 중단 요청시 안전한공간으로 해당 Process 저장
            3.다른 Process Load
        }
        - 무한 Loop
    2. 호출 방법
        - Non Preemptive Scheduling ( SW Interrupt 사용 -> Trap )
            Process가 자발적으로 CPU를 양보하여 다른 Process를 수행하는         Scheduling
     (ex) I/O에서 Block할 경우
        - Preemtive Scheduling ( HW Interrupt 사용 -> Timer사용 )
            OS가 강제로 Process로부터 CPU를 빼앗아 다른 Process를
            수행하는 Scheduling

  • Process Status Word(PSW)
    -OS란 Kernel mode에서 사용되는 *<함수 library>라고 할 수 있다.
    *함수 library 종류
        - System Call : OS의 Kernel이 제공하는 서비스를
                                     응용프로그램에요청하기 위한 인터페이스
        - Interrupt Service Routine
    - PSW Register 안의 특정 bit를 mode bit로 사용하여
     'Kernel Mode'와 'User Mode' 구분


*본 자료는 서울대학교 홍성수 교수님의 '운영체제' 수업을 바탕으로 개인적으로 정리하여 올립니다. 관련 이미지 자료는 홍성수 교수님 수업 PPT자료가 출처임을 알립니다. 문제 시 말씀해주시면 삭제 조치 하겠습니다. 감사합니다.

'프로그래밍 > 운영체제' 카테고리의 다른 글

MultiThreading  (0) 2016.10.13
Context Switching(2)  (0) 2016.10.11
Context Switching(1)  (0) 2016.10.11
Process Concept  (0) 2016.10.09
Computer Hardware  (0) 2016.10.05

Process Concept


  • Process : OS에서 프로그램을 수행시키는 기본 주체

- Runtime System의 수행 주체

- CPU나 다른 자원을 할당 받는 주체

- Process는 OS에서 가장 중요한 단위


  • Decomposition

- 복잡한 문제를 단순한 여러 개의 문제로 나누어 처리하는 방법론


  • Program과 Process의 차이

- Program : 저장매체에 저장된 수동적인 Code Sequence ( 수동적 )

- Process : Program을 실행할 때 일어나는 일 ( 능동적 )

(실행 시 메모리 할당 및 CPU할당 등 다양한 일을 포함)


  • Program State
    - 무언가 Program이 실행될 때 모든 Data를 말한다.
        1. Memory ( Memory Context 
            - Code : 기계어
            - Data : Program 전역 변수
            - Stack : Program 지역 변수
            - Heap : Program 동적 메모리 공간
        2. CPU ( H/W Context )
            - Register value
        3. Per - Process Kernel Info ( System Context )

  • Execution Stream
    - Process가 지금까지 수행한 모든 명령어들의 순서

  • Process 정리
    수행중인 Program -> State 필요 -> State 위에 Thread of Control
    또는 excution Stream 존재

  • Multi Programming
    - 여러개의 Active한 Process가 Memory에 올라가 있는 경우

  • Swapping ( Main Memory의 공간이 작을 때 사용 )
    - 메모리 부족문제를 해결하기 위해 CPU를 사용하지 않는 일부 Process의 데이터를 Memory에서 다른 저장 장치로 옮기고 CPU를 사용할 Process의 데이터를 Memory에 Load 한다.

  • Process Control Block (PCB)
    - OS가 가지고 있는 Process의 정보

  • Process Table
    - 여러개의 PCB를 Array로 관리

  • State Transition
    Process Life Cycle : Process가 생성되었을 때 부터 종료될 때 까지 발생하는 일련의 상태 변화

- Ready State : Active한 Process가 CPU할당을 받지 못한 상태 

(Queue를 통해 관리한다)
*Ready Queue : Ready 상태의 Process들을 관리하기 위한 Queue형태의 자료구조 -> 일반적으로 PCB들을 Linked List로 구현

- Waiting State : 여러개의 Process가 Waiting 상태일 수 있다. 단, Process마다 Waiting 이유가 다를 수 있기 때문에 OS는 Waiting 이유에 따라 별도의 Queue를 통해  Process들을 관리 한다.


*본 자료는 서울대학교 홍성수 교수님의 '운영체제' 수업을 바탕으로 개인적으로 정리하여 올립니다. 관련 이미지 자료는 홍성수 교수님 수업 PPT자료가 출처임을 알립니다. 문제 시 말씀해주시면 삭제 조치 하겠습니다. 감사합니다.

'프로그래밍 > 운영체제' 카테고리의 다른 글

MultiThreading  (0) 2016.10.13
Context Switching(2)  (0) 2016.10.11
Context Switching(1)  (0) 2016.10.11
Process Scheduling  (0) 2016.10.09
Computer Hardware  (0) 2016.10.05

Computer HardWare


운영체제 ---(가장 먼저 Interection)---> HardWare 


1. Computer System

1.1 System Bus

1.1.1 System Bus란 : 

CPU, Memory, I/O -> 상호간 Data 전송 역할 

1.1.2 System Bus의 종류

Data Bus, Address Bus

1.1.3 System Bus의 행동

Read & Write

- CPU <- Memory : Read

- CPU -> Memory : Write


1.2 Bus Master / Bus Arbiter / Bus Slave

1.2.1 Bus Master : 

-Bus Transaction을 시작하는 요소 

-System에는 여러개의 Bus Master가 존재함

* 대표적인 Bus Master : CPU, I/O Controller, DMA Controller 등

1.2.2 Bus Arbiter

여러Bus Master중 특정 Bus Master에게  Bus를 제공해주는 조정자

1.2.3 Bus Slave : 

데이터를 담고 있는 장치(Memory)


(*Transaction : CPU의 작업단위)

1.3 I/O Controller

1.3.1 Interrupt-Driven I/O :

I/O 동작이 완료되면 I/O Controller가 CPU에게 '비동기'적으로 완료되었음을 알려주는 방식

1.3.2 Polling I/O : 

I/O 동작이 완료 될 때까지 CPU가 반복해서 I/O Controller의 Resgister 상태를 확인하는 방식


1.4 DMA Operation (Direct Memory Access)

1.4.1 DMA 이란 :

CPU의 개입 없이 I/O Controller가 메모리에 직접 접근하여 Data를 읽거나 쓸 수 있도록 하는 기능

1.4.2 CPU가 DMA에게 전달하는 요소 :

CPU -----------> DMA Controller

- 전송 될 Block의 시작

- Block의 Size

- Operation Command (Read & Write)

(*DMA는 Block 단위로 전달 됨)

1.4.3 DMA 사용 이유 :

Block Data를 옮길 때 CPU Intervention을 최소화하기 위해 사용

1.4.4 DMA가 Block Data를 전송하는 방식

1. Cycle Stealing : 

CPU 성능에 영향이 없지만 DMA시간이 증가함

->CPU가 BUS를 사용하고 있지 않을 때만 DMA Controller가 Bus를 사용

2. Block Transfer : 

CPU 성능에 영향이 있지만 DMA시간이 감소

->CPU와 DMA Controller가 대등하게 경쟁하여 Bus를 사용

2. Interrupt Mechanism

2.1 Interrupt Mechanism이란

1. 비동기적 Mechanism

2. Hardware Interrupt

- CPU 외부에서 CPU가 관심을 가져야 될 상황에 대에서 CPU에게 전달 (비동기)

3. Software Interrupt

- 현재 수행하는 Program의 문제를 알리기 위해 사용

ex) Exception funtion

-코드분석을 통해 문제를 알 수 있음

(동기적)

2.2 Interrupt의 구현

1. Interrupt Source 

- I/O Controller, DMA Controller 등

2. Interrupt의 처리과정

- 현재 Instruction을 완료하고 마이크로 프로세서의 프로그램 카운터(PC)값을 안전한 곳에 저장

- 현재 수행중인 프로그램 중단

- Interrupt Request Number(IRN)를 통해 Interrupt Source 확인

- Interrupt Vector Table을 검색해서 Interrupt Service Routine(ISR)의 주소를 확인하고 수행

3. PIC(Programmable Interrupt Controller)

- CPU의 Interrupt PIN의 유동적 확장을 위해 사용

- PIC 하나당 16개 Interrupt 처리 가능


3. Hardware Protection Mechanism

3.1 Hardware Protection Mechanism 이란

- Multi Programming을 할 때 Memory에 Active한 여러 Job들이 다른 영역에 접근하지 못하게 하는 기법

*Privileged Instruction

 -> Operation System만 수행할 수 있는 Instruction

3.2 Duel Mode Operation

- Kernel Mode : Privileged Instruction들을 수행 시킬 수 있는 Mode

- User Mode : Privileged Instruction들을 수행 시킬 수 없는 Mode

- Mode변환은 Kernel Mode만 가능

- User Mode에서 Kernel Mode로 변환하기 위해선 Interrupt를 이용



*본 자료는 서울대학교 홍성수 교수님의 '운영체제' 수업을 바탕으로 개인적으로 정리하여 올립니다. 관련 이미지 자료는 홍성수 교수님 수업 PPT자료가 출처임을 알립니다. 문제 시 말씀해주시면 삭제 조치 하겠습니다. 감사합니다.

'프로그래밍 > 운영체제' 카테고리의 다른 글

MultiThreading  (0) 2016.10.13
Context Switching(2)  (0) 2016.10.11
Context Switching(1)  (0) 2016.10.11
Process Scheduling  (0) 2016.10.09
Process Concept  (0) 2016.10.09

+ Recent posts