SlideShare a Scribd company logo
최윤종
   프로세스 개념
   프로세스 스케줄링
   프로세스에 대한 연산
   프로세스간 통신
   실행중인 프로그램
   PC의 값과 레지스터 상태 등의 활동
   함수의 매개변수, 메모리 영역을 포함
    ◦ stack, static, heap
   프로그램과의 차이
    ◦ 보조기억장치에 저장(프로그램), 주기억장치에 적재(프로
      세스)
최   스택                      지역 변수
대


                    스택 및 힙의 데이터 증가 방향



     힙                    동적 할당 영역
          전역 변수(global), 정적 변수(static), 상수(문자열 상수 포함)
    데이터
           초기화된 정적 변수 및 초기화되지 않은 정적 변수(BSS)
0   텍스트                   실행 코드 영역
   new : 프로세스 생성 중
   running : 프로세스 실행 중
   waiting : 인터럽트 대기
   ready : CPU에 의한 프로세스 재개 대기
   terminated : 종료
exit
      admitted               interrupt

                                                             terminate
new                  ready               running
                                                                 d

                             scheduler
      I/O or event            dispatch
       completion                             I/O or event
                                                  wait

                              waiting
Process Control Block
   프로세스 상태
    ◦ new, ready, running, waiting, halted
   PC(Program Counter)
   CPU 레지스터들
    ◦ 누산기, 색인 레지스터, 스택 레지스터, 범용 레지스터,
      상태 코드
   CPU 스케줄링 정보
    ◦ 프로세스 우선 순위, 스케줄 큐 포인터, 다른 스케줄 매개
      변수
   메모리 관리 정보
    ◦ 베이스 레지스터 및 한계 레지스터의 값, 페이지 테이블
      또는 세그먼트 테이블
   회계 정보
    ◦ CPU가 사용된 양, 실제 사용된 시간, 시간 제한, 계정 번
      호, 작업(또는 프로세스) 번호
   I/O 상태 정보
    ◦ 입출력 장치들과 열린 파일의 리스트
   정리하면 다음과 같습니다
스케줄링 큐
• 작업 큐
 – 시스템 안의 모든 프로세스로 구성
• 준비 완료 큐
 – 실행을 대기하는 프로세스들
 – 큐의 헤더는 리스트의 첫번째, 마지막 PCB 포
   함
 – 각 항목은 다음 프로세스의 포인터 포함
• 장치 큐
 – 장치들의 입출력을 대기하는 프로세스로 구성
PCB7             PCB2
준비     머리
완료     꼬리   레지스터들         레지스터들
큐
              …                …
자기     머리
테이프
       꼬리    PCB3             PCB14           PCB6
장치 0

디스크    머리
장치 0        레지스터들         레지스터들          레지스터들
       꼬리     …                …               …

디스크    머리
장치 1   꼬리                              PCB5


                  터미널    머리
                                      레지스터들
                  장치 0   꼬리
                                        …
준비 완료 큐                  CPU



I/O       I/O 큐    I/O 요청


                  타임 슬라이스
                    종료

          fork
           ()       fork()
          수행

          인터
                   인터럽트
          럽트
                    대기
          발생
스케줄링 시나리오
1. 생성된 프로세스는 준비 완료 큐에 큐잉
2. 실행 될 때까지 준비 완료 큐에서 대기
3. 실행후 할 수 있는 동작들
 1. 프로세스가 I/O 요청을 하여 입출력 큐에 큐잉
 2. 자식 프로세스 생성, 종료 대기
 3. 인터럽트 발생으로 준비 완료 큐에 다시 큐잉
4. 프로세스 종료시까지 1~3번 동작 반복
   장기 스케줄러(작업 스케줄러)
    ◦ 한번에 많은 프로세스들이 처리되어야 할 때 여러 프로세
      스들 중에서 선택
   단기 스케줄러(CPU 스케줄러)
    ◦ 실행 준비가 완료된 프로세스들 중에서 프로세스 선택
   장기 스케줄러
    ◦ 프로세스 선택 빈도가 적음(수 분 이상)
    ◦ 프로세스 생성 빈도와 프로세스 이탈 빈도는 반드시 동일
      해야 함
   단기 스케줄러
    ◦ 프로세스 선택 빈도가 잦음(빠르면 100ms)
    ◦ 프로세스 선택에 드는 비용은 적어야 함
   CPU/IO 중심 프로세스
    ◦ 입출력 요청 빈도의 차이
    ◦ 장기 스케줄러는 적절히 혼합해서 선택
   운영체제의 선택
    ◦ UNIX, Windows는 장기 스케줄러가 없음
    ◦ 중기 스케줄러(swapping 사용)
   인터럽트 발생 시 운영체제에서 프로세스를 잠시
    중단하고 인터럽트를 처리
   문맥 항목
    ◦ CPU 레지스터의 값, 프로세스 상태, 메모리 관리 정보
   문맥 교환에 오버헤드 발생
    ◦ 메모리 속도, 복사할 레지스터 수, 특수 명령어의 사용 여
      부 등에 의해 문맥 교환 속도 결정
실행 중


          PCB0에 상태 저장       휴지 상태
                             (idle)
       PCB1로부터 상태를 다시 적재

            인터럽트 호출         실행 중


          PCB1에 상태를 저장
                            휴지 상태
                             (idle)
       PCB0으로부터 상태를 다시 적재

실행 중
   부모 : 생성하는 주체 프로세스
   자식 : 생성된 프로세스
   프로세스는 언제든 자식 프로세스를 생성
   최초 sched 프로세스 동작
    ◦ 자식 프로세스 init 생성
    ◦ …
   ps : 자식 프로세스 리스트 출력
   프로세스 자원
    ◦ 부모로부터 완전 상속(이미지 복사)
    ◦ 부모로부터 부분 상속(선택적 상속)
    ◦ 자식 프로세스에서 획득
   프로세스 생성후 가능한 동작
    ◦ 부모와 자식이 병렬로 실행
    ◦ 부모가 자식의 완료를 대기(wait)
   메모리 환경
    ◦ 자식은 부모에게서 상속
    ◦ 자식이 새로운 프로세스로 탈바꿈(exec)
   fork()
    ◦ 반환값 : 부모(자식의 PID), 자식(0)
fork()

자식
                  부모


exec()




            대기
exit()            wait()


            재개
   CreateProcess()
    ◦ 전형적인 exec 함수
    ◦ 매개변수가 매우 많습니다.
   마지막은 exit()로 종료
   종료 시 부모 프로세스에게 상태 반환
   자원은 운영체제의 품으로

   TerminateProcess() – Win32 API
    ◦ 해당 프로세스의 부모 프로세스에서만 동작
    ◦ 자식의 정보는 생성할때 받음
    ◦ 실행 종료 요인
      자원 초과, 작업 종료, 부모와 함께 종료
   연속적 종료
    ◦ 부모와 자식이 함께 종료하는 경우
    ◦ 자식이 순차적으로 종료되고 이어서 부모 종료
   프로세스간 자료 공유의 차이
   협력적 프로세스를 하는 이유
    ◦   정보 공유
    ◦   계산 가속화
    ◦   모듈화
    ◦   편의성
   프로세스간 통신(IPC)
    ◦ [I]nter[P]rocess [C]ommunication의 약자
   공유 메모리
    ◦ 프로세스 사이에 공유 가능한 메모리 할당
   메시지 전달
    ◦ 프로세스끼리 메시지를 교환
   메시지 전달이 구현에 용이
    ◦ 공유 메모리는 운영체제가 관리하지 않습니다
   공유 메모리 접근성 우수
    ◦ 포인터로 접근합니다
   공유 메모리 생성
    ◦ 주로 메모리를 요청하는 프로세스의 메모리에 할당
    ◦ 커널 작업
   공유 메모리 제약조건
    ◦ 양자간 합의된 상태에서 할당 가능합니다
   동기화 문제
   생산자는 여유 공간이 생길 때까지 대기
   소비자는 생산 결과가 생길 때까지 대기
   운영체제에서 메시지 전달 지원
   주고(send) 받기(receive)
    ◦ 고정 길이 / 가변 길이
   통신 연결 설정
    ◦ 커널 작업
   고려 사항
    ◦ 직접/간접 통신
    ◦ 동기/비동기 통신
    ◦ 묵시적/명시적 버퍼링
   대칭적 명명
    ◦ 통신하는 프로세스는 상대방을 알아야 함
      msgsnd(qid, message, …) / msgrcv(qid, …)
    ◦ 양자에는 하나의 연결만 필요
    ◦ 통신에는 두개의 프로세스만 참여
   비대칭적 명명
    ◦ 통신하는 프로세스는 여전히 상대방을 알아야 함
      msgsnd(pid, message, …) / msgrcv(pid, …)
   통신하는 프로세스 설정의 어려움
    ◦ 손으로...
   메시지는 메일박스 또는 포트로 송수신
    ◦ 메일박스 또는 포트는 추상화 되어있음
   통신 명명
    ◦ send(A, message, …) / recive(A, …)
    ◦ A는 메일박스 또는 포트
   연결은 프로세스 사이의 공유가 있을때만 생김
   다자간 통신
   연결 수 무제한
   간접 통신의 고려사항
    ◦ 다자간 통신에서의 송신자와 수신자
    ◦ 송/수신 순서
   메일박스(추상화)
    ◦ 프로세스간 1:1 연결
    ◦ 반 이중(half duplex)
    ◦ 소유자(생성 프로세스), 소멸(연결 종료)
   운영체제와의 통신
    ◦ 간접 통신 수단은 항상 열려있음
   봉쇄형 보내기
    ◦ 송신자는 수신자가 받을 때까지 대기
   비 봉쇄형 보내기
    ◦ 송신자는 수신 완료와 상관없이 작업 재개
   봉쇄형 받기
    ◦ 수신자는 송신자에게 받을 때까지 대기
   비 봉쇄형 받기
    ◦ 수신자는 받은 메시지가 없다면 null로 처리


   송/수신 봉쇄일때는 랑데부가 생김
   직/간접적인 방법과 별개로 메시지는 임시 큐를
    거쳐서 전달
   큐를 구현하는 방식
    ◦ 무용량 : 대기가 불가능하므로 송신 봉쇄
      버퍼가 없는 메시지 시스템
    ◦ 유한 용량 : 큐가 가득 차면 송신 봉쇄
    ◦ 무한 용량 : 송신은 결코 봉쇄되지 않음
    ◦ 유한 용량 및 무한 용량 큐는 자동 버퍼링

More Related Content

What's hot

프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장SukYun Yoon
 
Windws via c/c++ chapter 6
Windws via c/c++ chapter 6Windws via c/c++ chapter 6
Windws via c/c++ chapter 6SukYun Yoon
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
sung ki choi
 
A review of zookeeper 2010.12
A review of zookeeper 2010.12A review of zookeeper 2010.12
A review of zookeeper 2010.12HoJin Ha
 
[OS] Context switching
[OS] Context switching[OS] Context switching
[OS] Context switching
ssuserb2b4e71
 
Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41cosmosyc
 
04 프로세스
04 프로세스04 프로세스
04 프로세스
ssuser3fb17c
 
Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본
ssuser0c2478
 
도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace
Sam Kim
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
beom kyun choi
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요KTH
 
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
GangSeok Lee
 
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
GangSeok Lee
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장sung ki choi
 
뇌자T etc.windows multi threading programming
뇌자T   etc.windows multi threading programming뇌자T   etc.windows multi threading programming
뇌자T etc.windows multi threading programmingcancan21st
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
JangHyuk You
 
programming with GDB
programming with GDBprogramming with GDB
programming with GDBNakCheon Jung
 

What's hot (20)

프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
프로그래머가 몰랐던 멀티코어 CPU 이야기 13, 14장
 
Windws via c/c++ chapter 6
Windws via c/c++ chapter 6Windws via c/c++ chapter 6
Windws via c/c++ chapter 6
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
 
A review of zookeeper 2010.12
A review of zookeeper 2010.12A review of zookeeper 2010.12
A review of zookeeper 2010.12
 
교착 상태
교착 상태교착 상태
교착 상태
 
[OS] Context switching
[OS] Context switching[OS] Context switching
[OS] Context switching
 
Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41
 
04 프로세스
04 프로세스04 프로세스
04 프로세스
 
Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본Windows via C/C++ 06 스레드의 기본
Windows via C/C++ 06 스레드의 기본
 
도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace도커없이컨테이너 만들기 8편 - pid namespace
도커없이컨테이너 만들기 8편 - pid namespace
 
Git
GitGit
Git
 
Gfs Kyu
Gfs KyuGfs Kyu
Gfs Kyu
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요H3 2011 파이썬으로 클라우드 하고 싶어요
H3 2011 파이썬으로 클라우드 하고 싶어요
 
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기[2014 CodeEngn Conference 10] 노용환 -  디버거 개발, 삽질기
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기
 
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장
 
뇌자T etc.windows multi threading programming
뇌자T   etc.windows multi threading programming뇌자T   etc.windows multi threading programming
뇌자T etc.windows multi threading programming
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
 
programming with GDB
programming with GDBprogramming with GDB
programming with GDB
 

Viewers also liked

운영 체제 Sig
운영 체제 Sig운영 체제 Sig
운영 체제 SigYoungGun Na
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제Kyungryul KIM
 
루트(root)에 대해
루트(root)에 대해루트(root)에 대해
루트(root)에 대해
licubeclub
 
운영체제 Chapter1
운영체제 Chapter1운영체제 Chapter1
운영체제 Chapter1
YoungGun Na
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
jieun kim
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
doo rip choi
 
매닛컬쳐 사업계획서
매닛컬쳐 사업계획서매닛컬쳐 사업계획서
매닛컬쳐 사업계획서Sangwon Lee
 
Presentation Skill
Presentation SkillPresentation Skill
Presentation Skill
Manyong Han
 
[앙트십 프로젝트] 양정여고 "마켓인유"
[앙트십 프로젝트] 양정여고 "마켓인유"[앙트십 프로젝트] 양정여고 "마켓인유"
[앙트십 프로젝트] 양정여고 "마켓인유"
oeclab
 
퍼블릭랩 착수발표
퍼블릭랩 착수발표퍼블릭랩 착수발표
퍼블릭랩 착수발표peptres
 
Xem2014 발표자료
Xem2014 발표자료Xem2014 발표자료
Xem2014 발표자료
devxinics
 
무지개 프로젝트 Final
무지개 프로젝트 Final무지개 프로젝트 Final
무지개 프로젝트 Final다운 이
 
클라우드 스토리지 프로젝트
클라우드 스토리지 프로젝트클라우드 스토리지 프로젝트
클라우드 스토리지 프로젝트
licubeclub
 
큐스 사업계획서
큐스 사업계획서큐스 사업계획서
큐스 사업계획서
만수 신
 
[E조] 미디어프로젝트
[E조] 미디어프로젝트[E조] 미디어프로젝트
[E조] 미디어프로젝트heeyoungkimlisa
 
Sns workshop 02
Sns workshop 02Sns workshop 02
Sns workshop 02창열 이
 
SQL-on-Hadoop 그리고 Tajo - Tech Planet 2013
SQL-on-Hadoop 그리고 Tajo - Tech Planet 2013SQL-on-Hadoop 그리고 Tajo - Tech Planet 2013
SQL-on-Hadoop 그리고 Tajo - Tech Planet 2013Hyunsik Choi
 

Viewers also liked (20)

운영 체제 Sig
운영 체제 Sig운영 체제 Sig
운영 체제 Sig
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제
 
Ch7
Ch7Ch7
Ch7
 
루트(root)에 대해
루트(root)에 대해루트(root)에 대해
루트(root)에 대해
 
운영체제 Chapter1
운영체제 Chapter1운영체제 Chapter1
운영체제 Chapter1
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203시스템 관리자를 위한 리눅스강의 1강 20130203
시스템 관리자를 위한 리눅스강의 1강 20130203
 
매닛컬쳐 사업계획서
매닛컬쳐 사업계획서매닛컬쳐 사업계획서
매닛컬쳐 사업계획서
 
Presentation Skill
Presentation SkillPresentation Skill
Presentation Skill
 
[앙트십 프로젝트] 양정여고 "마켓인유"
[앙트십 프로젝트] 양정여고 "마켓인유"[앙트십 프로젝트] 양정여고 "마켓인유"
[앙트십 프로젝트] 양정여고 "마켓인유"
 
퍼블릭랩 착수발표
퍼블릭랩 착수발표퍼블릭랩 착수발표
퍼블릭랩 착수발표
 
Xem2014 발표자료
Xem2014 발표자료Xem2014 발표자료
Xem2014 발표자료
 
무지개 프로젝트 Final
무지개 프로젝트 Final무지개 프로젝트 Final
무지개 프로젝트 Final
 
Lazybuster
LazybusterLazybuster
Lazybuster
 
클라우드 스토리지 프로젝트
클라우드 스토리지 프로젝트클라우드 스토리지 프로젝트
클라우드 스토리지 프로젝트
 
큐스 사업계획서
큐스 사업계획서큐스 사업계획서
큐스 사업계획서
 
[E조] 미디어프로젝트
[E조] 미디어프로젝트[E조] 미디어프로젝트
[E조] 미디어프로젝트
 
Sns workshop 02
Sns workshop 02Sns workshop 02
Sns workshop 02
 
SQL-on-Hadoop 그리고 Tajo - Tech Planet 2013
SQL-on-Hadoop 그리고 Tajo - Tech Planet 2013SQL-on-Hadoop 그리고 Tajo - Tech Planet 2013
SQL-on-Hadoop 그리고 Tajo - Tech Planet 2013
 
Google3
Google3Google3
Google3
 

Similar to 프로세스

System+os study 3
System+os study 3System+os study 3
System+os study 3
Jinkyoung Kim
 
Process (프로세스의 개념, 특징, 정의)
Process (프로세스의 개념, 특징, 정의)Process (프로세스의 개념, 특징, 정의)
Process (프로세스의 개념, 특징, 정의)
ssuserd5354e
 
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
jieun kim
 
Lightning Talk 10
Lightning Talk 10Lightning Talk 10
Lightning Talk 10
DonggyuKim21
 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
Yunseok Lee
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
Sunggon Song
 
Process에 대한 이해
Process에 대한 이해Process에 대한 이해
Process에 대한 이해
Wonjun Hwang
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
Ho Jeong Im
 
Tcp summary
Tcp summaryTcp summary
Tcp summary
Jooho Lee
 
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdfCPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
Ho Jeong Im
 
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
ymtech
 
1111
11111111
1111
usdrd90
 
운영체제 Chapter 8
운영체제 Chapter 8운영체제 Chapter 8
운영체제 Chapter 8YoungGun Na
 
프로세스 관리
프로세스 관리프로세스 관리
프로세스 관리jeiger
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
Seunghwa Song
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
Sung-jae Park
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
중선 곽
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
Seungyong Lee
 

Similar to 프로세스 (20)

System+os study 3
System+os study 3System+os study 3
System+os study 3
 
Process (프로세스의 개념, 특징, 정의)
Process (프로세스의 개념, 특징, 정의)Process (프로세스의 개념, 특징, 정의)
Process (프로세스의 개념, 특징, 정의)
 
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
 
Lightning Talk 10
Lightning Talk 10Lightning Talk 10
Lightning Talk 10
 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
 
Process에 대한 이해
Process에 대한 이해Process에 대한 이해
Process에 대한 이해
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
 
Tcp summary
Tcp summaryTcp summary
Tcp summary
 
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdfCPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
 
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
 
Thread programming
Thread programmingThread programming
Thread programming
 
1111
11111111
1111
 
운영체제 Chapter 8
운영체제 Chapter 8운영체제 Chapter 8
운영체제 Chapter 8
 
프로세스 관리
프로세스 관리프로세스 관리
프로세스 관리
 
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
이기종 멀티코어 프로세서를 위한 프로그래밍 언어 및 영상처리 오픈소스
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
shell and process
shell and processshell and process
shell and process
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 

프로세스

  • 2. 프로세스 개념  프로세스 스케줄링  프로세스에 대한 연산  프로세스간 통신
  • 3.
  • 4. 실행중인 프로그램  PC의 값과 레지스터 상태 등의 활동  함수의 매개변수, 메모리 영역을 포함 ◦ stack, static, heap  프로그램과의 차이 ◦ 보조기억장치에 저장(프로그램), 주기억장치에 적재(프로 세스)
  • 5. 스택 지역 변수 대 스택 및 힙의 데이터 증가 방향 힙 동적 할당 영역 전역 변수(global), 정적 변수(static), 상수(문자열 상수 포함) 데이터 초기화된 정적 변수 및 초기화되지 않은 정적 변수(BSS) 0 텍스트 실행 코드 영역
  • 6. new : 프로세스 생성 중  running : 프로세스 실행 중  waiting : 인터럽트 대기  ready : CPU에 의한 프로세스 재개 대기  terminated : 종료
  • 7. exit admitted interrupt terminate new ready running d scheduler I/O or event dispatch completion I/O or event wait waiting
  • 8. Process Control Block  프로세스 상태 ◦ new, ready, running, waiting, halted  PC(Program Counter)  CPU 레지스터들 ◦ 누산기, 색인 레지스터, 스택 레지스터, 범용 레지스터, 상태 코드  CPU 스케줄링 정보 ◦ 프로세스 우선 순위, 스케줄 큐 포인터, 다른 스케줄 매개 변수
  • 9. 메모리 관리 정보 ◦ 베이스 레지스터 및 한계 레지스터의 값, 페이지 테이블 또는 세그먼트 테이블  회계 정보 ◦ CPU가 사용된 양, 실제 사용된 시간, 시간 제한, 계정 번 호, 작업(또는 프로세스) 번호  I/O 상태 정보 ◦ 입출력 장치들과 열린 파일의 리스트
  • 10. 정리하면 다음과 같습니다
  • 11.
  • 12. 스케줄링 큐 • 작업 큐 – 시스템 안의 모든 프로세스로 구성 • 준비 완료 큐 – 실행을 대기하는 프로세스들 – 큐의 헤더는 리스트의 첫번째, 마지막 PCB 포 함 – 각 항목은 다음 프로세스의 포인터 포함 • 장치 큐 – 장치들의 입출력을 대기하는 프로세스로 구성
  • 13. PCB7 PCB2 준비 머리 완료 꼬리 레지스터들 레지스터들 큐 … … 자기 머리 테이프 꼬리 PCB3 PCB14 PCB6 장치 0 디스크 머리 장치 0 레지스터들 레지스터들 레지스터들 꼬리 … … … 디스크 머리 장치 1 꼬리 PCB5 터미널 머리 레지스터들 장치 0 꼬리 …
  • 14. 준비 완료 큐 CPU I/O I/O 큐 I/O 요청 타임 슬라이스 종료 fork () fork() 수행 인터 인터럽트 럽트 대기 발생
  • 15. 스케줄링 시나리오 1. 생성된 프로세스는 준비 완료 큐에 큐잉 2. 실행 될 때까지 준비 완료 큐에서 대기 3. 실행후 할 수 있는 동작들 1. 프로세스가 I/O 요청을 하여 입출력 큐에 큐잉 2. 자식 프로세스 생성, 종료 대기 3. 인터럽트 발생으로 준비 완료 큐에 다시 큐잉 4. 프로세스 종료시까지 1~3번 동작 반복
  • 16. 장기 스케줄러(작업 스케줄러) ◦ 한번에 많은 프로세스들이 처리되어야 할 때 여러 프로세 스들 중에서 선택  단기 스케줄러(CPU 스케줄러) ◦ 실행 준비가 완료된 프로세스들 중에서 프로세스 선택
  • 17. 장기 스케줄러 ◦ 프로세스 선택 빈도가 적음(수 분 이상) ◦ 프로세스 생성 빈도와 프로세스 이탈 빈도는 반드시 동일 해야 함  단기 스케줄러 ◦ 프로세스 선택 빈도가 잦음(빠르면 100ms) ◦ 프로세스 선택에 드는 비용은 적어야 함
  • 18. CPU/IO 중심 프로세스 ◦ 입출력 요청 빈도의 차이 ◦ 장기 스케줄러는 적절히 혼합해서 선택  운영체제의 선택 ◦ UNIX, Windows는 장기 스케줄러가 없음 ◦ 중기 스케줄러(swapping 사용)
  • 19. 인터럽트 발생 시 운영체제에서 프로세스를 잠시 중단하고 인터럽트를 처리  문맥 항목 ◦ CPU 레지스터의 값, 프로세스 상태, 메모리 관리 정보  문맥 교환에 오버헤드 발생 ◦ 메모리 속도, 복사할 레지스터 수, 특수 명령어의 사용 여 부 등에 의해 문맥 교환 속도 결정
  • 20. 실행 중 PCB0에 상태 저장 휴지 상태 (idle) PCB1로부터 상태를 다시 적재 인터럽트 호출 실행 중 PCB1에 상태를 저장 휴지 상태 (idle) PCB0으로부터 상태를 다시 적재 실행 중
  • 21.
  • 22. 부모 : 생성하는 주체 프로세스  자식 : 생성된 프로세스  프로세스는 언제든 자식 프로세스를 생성
  • 23.
  • 24. 최초 sched 프로세스 동작 ◦ 자식 프로세스 init 생성 ◦ …  ps : 자식 프로세스 리스트 출력  프로세스 자원 ◦ 부모로부터 완전 상속(이미지 복사) ◦ 부모로부터 부분 상속(선택적 상속) ◦ 자식 프로세스에서 획득
  • 25. 프로세스 생성후 가능한 동작 ◦ 부모와 자식이 병렬로 실행 ◦ 부모가 자식의 완료를 대기(wait)  메모리 환경 ◦ 자식은 부모에게서 상속 ◦ 자식이 새로운 프로세스로 탈바꿈(exec)  fork() ◦ 반환값 : 부모(자식의 PID), 자식(0)
  • 26. fork() 자식 부모 exec() 대기 exit() wait() 재개
  • 27. CreateProcess() ◦ 전형적인 exec 함수 ◦ 매개변수가 매우 많습니다.
  • 28.
  • 29. 마지막은 exit()로 종료  종료 시 부모 프로세스에게 상태 반환  자원은 운영체제의 품으로  TerminateProcess() – Win32 API ◦ 해당 프로세스의 부모 프로세스에서만 동작 ◦ 자식의 정보는 생성할때 받음 ◦ 실행 종료 요인  자원 초과, 작업 종료, 부모와 함께 종료
  • 30. 연속적 종료 ◦ 부모와 자식이 함께 종료하는 경우 ◦ 자식이 순차적으로 종료되고 이어서 부모 종료
  • 31.
  • 32. 프로세스간 자료 공유의 차이  협력적 프로세스를 하는 이유 ◦ 정보 공유 ◦ 계산 가속화 ◦ 모듈화 ◦ 편의성  프로세스간 통신(IPC) ◦ [I]nter[P]rocess [C]ommunication의 약자
  • 33. 공유 메모리 ◦ 프로세스 사이에 공유 가능한 메모리 할당  메시지 전달 ◦ 프로세스끼리 메시지를 교환  메시지 전달이 구현에 용이 ◦ 공유 메모리는 운영체제가 관리하지 않습니다  공유 메모리 접근성 우수 ◦ 포인터로 접근합니다
  • 34. 공유 메모리 생성 ◦ 주로 메모리를 요청하는 프로세스의 메모리에 할당 ◦ 커널 작업  공유 메모리 제약조건 ◦ 양자간 합의된 상태에서 할당 가능합니다  동기화 문제
  • 35. 생산자는 여유 공간이 생길 때까지 대기  소비자는 생산 결과가 생길 때까지 대기
  • 36. 운영체제에서 메시지 전달 지원  주고(send) 받기(receive) ◦ 고정 길이 / 가변 길이  통신 연결 설정 ◦ 커널 작업  고려 사항 ◦ 직접/간접 통신 ◦ 동기/비동기 통신 ◦ 묵시적/명시적 버퍼링
  • 37. 대칭적 명명 ◦ 통신하는 프로세스는 상대방을 알아야 함  msgsnd(qid, message, …) / msgrcv(qid, …) ◦ 양자에는 하나의 연결만 필요 ◦ 통신에는 두개의 프로세스만 참여  비대칭적 명명 ◦ 통신하는 프로세스는 여전히 상대방을 알아야 함  msgsnd(pid, message, …) / msgrcv(pid, …)  통신하는 프로세스 설정의 어려움 ◦ 손으로...
  • 38. 메시지는 메일박스 또는 포트로 송수신 ◦ 메일박스 또는 포트는 추상화 되어있음  통신 명명 ◦ send(A, message, …) / recive(A, …) ◦ A는 메일박스 또는 포트  연결은 프로세스 사이의 공유가 있을때만 생김  다자간 통신  연결 수 무제한
  • 39. 간접 통신의 고려사항 ◦ 다자간 통신에서의 송신자와 수신자 ◦ 송/수신 순서  메일박스(추상화) ◦ 프로세스간 1:1 연결 ◦ 반 이중(half duplex) ◦ 소유자(생성 프로세스), 소멸(연결 종료)  운영체제와의 통신 ◦ 간접 통신 수단은 항상 열려있음
  • 40. 봉쇄형 보내기 ◦ 송신자는 수신자가 받을 때까지 대기  비 봉쇄형 보내기 ◦ 송신자는 수신 완료와 상관없이 작업 재개  봉쇄형 받기 ◦ 수신자는 송신자에게 받을 때까지 대기  비 봉쇄형 받기 ◦ 수신자는 받은 메시지가 없다면 null로 처리  송/수신 봉쇄일때는 랑데부가 생김
  • 41. 직/간접적인 방법과 별개로 메시지는 임시 큐를 거쳐서 전달  큐를 구현하는 방식 ◦ 무용량 : 대기가 불가능하므로 송신 봉쇄  버퍼가 없는 메시지 시스템 ◦ 유한 용량 : 큐가 가득 차면 송신 봉쇄 ◦ 무한 용량 : 송신은 결코 봉쇄되지 않음 ◦ 유한 용량 및 무한 용량 큐는 자동 버퍼링