Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- post
- 무료다운로드쿠폰
- UTF-8
- Regex
- Arrays
- 경영
- Linux
- Laravel
- file-upload
- Apache
- variables
- MySQL
- Ajax
- JSON
- php
- function
- date
- string
- jquery
- 전략
- curl
- OOP
- HTML
- 웹하드순위
- Session
- composer-php
- 웹하드추천
- Forms
- JavaScript
Archives
- Today
- Total
개발! 딱 깔끔하고 센스있게!
운영체제 정리 본문
운영체제
1주차 1강
운영체제
- 컴퓨터를 동작시키는 소프트웨어
컴퓨터 시스템 구성요소
- 하드웨어 : 데이터를 처리하는 물리적 기계장치 (프로세서, 버스, 메모리 등)
- 소프트웨어 : 명령어로 작성된 프로그램
- 운영체제
- 하드웨어와 사용자 사이에 위치
- 하드웨어와 소프트웨어 자원을 관리하는 프로그램
- 컴퓨터 시스템의 핵심요소
- CPU <> RAM <> HDD
- 프로세서
- 각 부분의 동작 제어 및 연산 수행
- 중앙처리장치 : 레지스터, 산술 논리 연산장치, 제어장치
- 마이크로 프로세서 : 주기억장치를 제외한 레지스터, 산술 논리 연산장치, 제어장치를 칩하나로 구성, 개인용컴퓨터
- 버스
- 내부버스 : 프로세서 내부의 레지스터, 연산장치, 메모리 연결
- 외부버스 : 시스템버스, 입출력장치간
- 데이터버스 : 데이터가 지나가는 통로
- 주소버스 : 다른장치로 주소정보를 전송
- 제어버스 : 수행중인 작업상태를 알리는 단방향 버스
- 프로세서와 각 장치간 또는 서브시스템을 서로 연결하여 종보를 주고받게하는 통로
- 데이터 입출력신호, 프로세서 상태신호, 인터럽트 요구와 허가신호
- 위치에 따른 분류
- 기능에 따른 분류
- 레지스터
- 사용자 프로그램을 통해 접근 가능한 데이터
- 프로세스의 제어와 상태관리
- 프로그램 카운터, 명령어 레지스터, 상태 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터
- 프로세서에 위치한 고속메모리, 바로사용하도록 데이터 저장
- 사용자 가시 레지스터
- 사용자 불가시 레지스터
- 메모리
- 메모리 참조가 지역성(국부성) 이라는 특징
- 지역성 : 실행중인 프로세서가 실행기간동안 메모리를 균일하게 접근하지않고 블록중 일부만 집중적 참조하는 현상
- 발생이유 : 명령어를 순차적으로 실행하는 경향, 순차적으로 자주접근
- 원시 프로그램을 기계명령어로 변환처리과정
- 메인 메모리의 유효 크기를 늘리는 기법
- 보조기억장치에 프로그램이나 데이터를 저장했다 필요시 메인 메모리로 이동시키는 기술
- 가상 메모리를 활용하기위해 참조하는 주소와 메모리에서 사용하는 주소 분리해야함 (매핑)
- 메인 메모리보다 큰 용량의 주소를 지정가능
- 실제사용하는 부분만 실제 메인메모리, 그외는 보조기억장치로 매핑
- 프로레서와 메인 메모리 사이의 고속버퍼
- 데이터가 이동할수있는 통로를 확대하여 프로세어와 메인 메모리 속도 차를 줄임
- 태그 영역으로 나눠서 동작
- 메모리 계층 구조
- 메인 메모리
- 다수의 셀로 구성되며 각 셀들은 비트로 구성
- 셀은 주소에 의해 참조됨
- 물리적주소 공간
- 논리적주소 공간
- 컴파일
- 메모리 접근 시간 : 명령 발생후 목표 번지를 검색하여 데이터 쓰기를 시작할때 까지의 시간
- 메모리 사이클 시간 : 두 번의 연속적인 메모리 동작 사이에 필요한 최소 지연시간
- 가상메모리
- 캐시
- 주변장치
- 입력장치, 출력 장치, 보조기억장치, 스캐너, 모뎀등
1주차 2강
운영제체의 역할과 목적
- 하드웨어와 응용 프로그램간의 인터페이스 역할, 컴퓨터 자원관리, 사용자 편의제공
운영체제의 역할
- 하드웨어와 사용자간의 인터페이스를 정의
- 사용자들이 하드웨어를 공동으로 사용할수있도록 해줌
- 사용자간의 자원 스케줄링, 자원 할장자역할 수행
- 입출력 보조 역할
- 오류처리
- 시스템 소프트웨어
- 시스템 전체를 작동, 인터럽트관리, 장치관리, 언어번역
- 커널
- 운영체제의 핵심, 메모리에 상주
운영체제의 목적
- 편리성 : 사용자에게 편리한 환경 제공
- 효율성 : 자원을 효과적으로 사용
- 처리능력(Throughtput) : 시스템의 생산성을 나타내는 지표, 단위 시간당 처리하는 작업량
- 신뢰도 : 실패없이 기능 수행하는 능력
- 응답 시간(Thrn Around Time) : 시스템에 작업을 의뢰한 시간부터 반응을 얻을 때까지의 시간
- 사용가능도 : 가동률, 사용자가 실제로 컴퓨터를 사용한 시간
운영체제 기능의 발전
- 초기의 컴퓨터
- 작업별 처리 시스템
- 속도가 느림, 하드웨어만 있어 콘솔로 기계어 작성
- 일괄 처리시스템
- 상주모니터 : 초기의 운영체제 형태
버퍼링
- 입출력장치의 느린속도를 보완, 유휴시간이 없도록 동시에 수행하는 기능
스풀링
- 프로세서가 다른부분을 판독하는 동안 추가로 기록할수없는 문제해결, 추가기록이 가능한 디스크 특성을 이용
- CPU의 이용률을 향상을 위해, 다양한 입출력장치를 이용하기위해
운영체제 유형별 특징
- 다중 프로그래밍 시스템
- 프로세서가 항상 수행할 작업을 가지도록하여 프로세서 이용륭 증진
- 인터럽트를 이용하여 수행하는 프로세서 스케줄링
- 시분할 시스템
- 다중프로그래밍을 논리적으로 확장한 개념, 다중작업을 교대로 수행
- 프로세서 스케줄링과 다중 프로그래밍을 사용해 각 사용자에게 시간적으로 분할
- 대화식 입출력
- 일괄처리 시스템
- 분산처리 시스템
- 다중 처리 시스템
- CPU를 여러개를 연결, 시간당 처리량증가
- 주/종 다중처리 시스템(마스터/슬레이브) : 비대칭구조
2주차 1강
운영체제 발전과정
- 제0세대 (1940년대 )
- 운영체제없음
- 기계어사용
- 제1세대 (1950년대 )
- IBM701(운영체제효시)
- 작업간의원활한변환
- 버퍼링, 스풀링, 일괄처리시스템
- 제2세대 (1960년대초 )
- 고급언어로운영체제작성
- 장치독립성
- 다중프로그램밍, 다중처리, 시분할시스템
- 제3세대 (1960년대중반~ 1970년대중반 )
- IBM360 시리즈, 유닉스
- 범용시스템
- 다중모드시스템
- 제4세대 (1970년대중반~ 현재 )
- 네트워크시스템
- 가상머신, 분산데이터처리
- 개인컴퓨터
운영체제 기능
- 자원관리기능
- 메모리 관리
- 보조기억장치 관리
- 프로세스 관리
- 장치관리 (입출력 관리)
- 파일관리
- 시스템보호
- 네트워킹
- 명령어 해석기와 시스템관리
운영체제 서비스
- 부트스트래핑 서비스
- 운영체제가 적재되는 과정을 부트스트래핑 또는 부팅이라고 함
- 사용자 서비스
- 사용자 인터페이스
- 프로그램 수행
- 입출력동작
- 파일 시스템 조작
- 통신
- 오류탐지
- 시스템 서비스
- 사용자가 아닌 시스템에서 효율적인 동작을 보장하는 기능
- 자원할당
- 계정
- 보호
- 시스템 호출서비스
- 프로세스 제어
- 파일조작
- 장치 조작
- 정보관리
- 통신
2주차 2강
프로세스 개요
- 프로세스 개념
- 메모리에 주소 공간을 갖는 능동적인 개체
- 실행 스택 : 호출된 프로시저의 복귀주소와 지역 변수등 일시적인 데이터 저장영역
- 실행 힙 : 텍스트 영역과는 별도로 유지되는 자유 영역
- 데이터 : 변수 저장
- 텍스트 : 프로세서가 실행하는 코드 저장
- 재진입 프로그램(재진입 코드)
- 여러 사용자가 공유할수 있도록 작성된 프로그램 또는 루틴
- 프로세스는 사용자 관점에서 세그먼트의 가상 주소 공간을 갖는 상태 의미
프로세스 관리
- 프로세스 종류
- 운영체제 프로세스 : 커널 프로세스, 실행순서제어, 감시, 시스템 운영
- 사용자 프로세스 : 사용자 코드 수행
- 병행 프로세스 : 프로세스가 여러개 동시에 실행
- 독립 프로세스
- 협동 프로세스
- 프로세스 상태
- 실행과 비실행 구분
- 프로세스 상태변화
- 종료되어 시스템을 떠날 때까지 준비, 실행, 대기 상태로 변화 반복
- 작업 스케줄러
- 스풀러가 저장한 작업을 선정, 준비리스트에 삽입
- 다중 프로그래밍의 정도를 결정
- 프로세스 상태변화
- 준비 > 실행
- 디스패치(Dispatch) : 준비 리스트 맨앞에 있는 프로세스가 프로세서를 선택배당
- 시간할당 : 일정시간만 사용시간할당, 독점방지
- 실행 > 대기(보류)
- 실행 프로세스가 지정 시간전 입출력 연산등이 필요할때 스스로 프로세서 양도
- 대기(보류) > 준비
- 깨움(Wake Up) : 입출력 작업이 끝났을때 발생
- 프로세스 제어블록(PCB)
- 프로세스를 관리 유지
- 프로세스 생성시 만들어지고 메모리에 유지, 존재 정의
- 프로세스 식별자 : 프로세스 고유 식별자지정
- 프로세스 상태 : 생성, 준비, 실행, 대기, 중단 상태표시
- 프로그램 카운터 : 프로그램 실행을 위한 다음 명령 주소 표시
- 레지스터 저장 영역 : 누산기, 인덱스 레지스터, 범용 레지스터
- 프로세서 스케줄링 정보 : 프로세스의 우선순위
- 계정 정보
- 입출력 상태 정보
- 메모리 관리 정보
- 프로세스 교환
- 프로세스의 교환은 인터럽트와 트랩, 시스템호출로 나타냄
3주차 1강
프로세스 관리-1
- 프로세스 구조
- 프로세스는 부모자식 관계를 유지하며 계층적으로 생성
- 유닉스 시스템의 일반적인 프로세스 계층 구조
- 처음 부팅시 식별자가 0인 첫번째 프로세스 Swapper 생성
- 프로세스 생성
- 프로세스는 운영체제 또는 다른 사용자의 응용프로그램 요청에 의해 생성
- 운영체제가 새로운 프로세스를 생성 추가 하려면 프로세스 관리를 위한 제어 블록을 만든후 주소공간 할당
- 프로세스 생성 과정
- 1단계 : 새로운 프로세스에 프로세스 식별자 할당
- 2단계 : 주소공간, 프로세스 제어블록공간 할당
- 3단계 : 프로세스 제어 블록 초기화
- 상태정보/프로그램카운터/스택 포인터 초기화, 자원요청, 우선순위 등
- 4단계 : 링크 (해당 큐에 삽입)
- 프로세스가 작업을 위해 자원 필요
- 자식 프로세스 생성시 필요한 자원을 직접 또는 부모 프로세스의 자원 일부 사용
- 부모 프로세스는 자식 프로세스에 자원을 나누거나 자원 공유 가능
- 자원 일부만 사용하도록 제한하면 시스템 부담 방지
- 새로운 프로세스 생성시 실행과 관련 두가지 경우 가능
- 부모 프로세스와 자식 프로세스가 동시 실행됨
- 부모 프로세스는 자식 프로세스들이 모두 종료될 때까지 기다림
- 새로운 프로세스의 주소 공간은 다음 두가지 경우 가능
- 자식 프로세스가 부모 프로세스의 주소 공간을 복사
- 자식 프로세스가 별도의 프로그램 적제
- 프로세스 종료
- 프로세스가 명령 실행후 종료되고 운영체제에 프로세스 삭제 요청
- 일괄 처리 환경 : 작업 종료를 의미하는 신호로 인터럽트 발생 또는 시스템 호출로 중지 명령 전달, 프로세스 완료
- 대화형 환경 : 사용자가 로그오프 하거나 터미널을 닫을 때 오류에 의해 종료
- abort 시스템 호출을 이용한 프로세스 종료
- 종료되는 프로세스를 생성한 부모 프로세스만 호출 가능
- 부모 프로세스가 자식 프로세스의 생존권을 가져 다른 프로세스는 임의로 작업 중단 시킬수 없음
- 자식 프로세스 종료시 자식 프로세서의 신원이 부모 프로세스로 전달
- 부모 프로세스는 아래의 이유로 자식 프로세스 종료가능
- 자식 프로세스가 할당자원을 초과하여 자원을 사용할때
- 자식 프로세스에 할당된 작업이 더 이상 없을때
- 연속 종료
- 시스템이 부모 프로세스 종료시 자식 프로세스의 존재를 허용하지 않아 종료시키는 현상, 운영체제가 수행
- 프로세스를 종료하는 경우와 예
- 정상종료
- 시간초과
- 실패
- 산술오류, 보호오류, 데이터오류
- 메모리 부족, 접근위반
- 프로세스를 파괴하는 것
- 제거시 프로세스에 속한 자원을 시스템에 돌려주고 해당 프로세스는 테이블에서 사라지며, 제어블록 회수
- 프로그램은 디스크에 저장됨
프로세스 관리-2
- 프로세스 중단과 재시작
- 프로세스 중단(일시 정지)
- 프로세서의 동작시간과 입출력 동작 시간차이로 시스템활동시간이 유휴상태로 되는것을 해결 가능
- 장시간 중단되는 경우 할당된 자원을 다시 풀어주어야한다
- 다중 프로그래밍에서 중단은 자원부족(대기) 상태를 의미함
- 운영체제는 두가지 방법으로 프로세스 실행가능
- 새로운 프로세스를 생성하여 실행
- 이미 실행 중인 프로세스를 중단 시켰다가 다시 실행
- 프로세스 재시작
- 중단원인이 제거되어 프로세스가 다시 실행되는것
- 중단되었던 프로세스는 중단 되었던 지점부터 다시시작
- 프로세스 우선 순위 변경
- 프로세스 제어블록의 우선 순위값 변경 가능
- 준비 리스트의 프로세스는 우선순위 구분
- 우선순위가 낮은 프로세스 : 시간 할당량 크게 제공
- 우선순위가 높은 프로세스 : 시간 할당량 낮게 제공
- 입출력 프로세스
- 높은 우선 순위 : 속도가 느리면서 빠른 응답을 요구하는 단말기
- 낮은 우선 순위 : 속도가 빠른 디스크 입출력 프로세스
- 프로세스 스케줄러는 준비 리스트의 우선 순위를 이용해 프로세스를 처리
- 할당 시간을 초과할 경우 프로세스 실행 상태에서 준비 상태로 변경
- 문맥교환 (Context Switching)
- 프로세스 교환
- 실행중인 프로세스가 인터럽트되면 운영체제가 다른 프로세스를 실행상태로 변경, 제어를 넘겨주는 과정
- 트랩은 시스템이 치명적오류인지 판단, 치명적 오류일 경우 프로세스를 종료하면서 프로세스 교환 발생
- 문맥 교환
- 프로세스를 다른 프로세스로 교환하기 위해 이전 프로세스 상태레지스터 내용보관, 다른 프로세스를 적재과정
- 준비>실행, 실행>준비, 실행>대기 상태로 변할때 발생
- 오버헤드가 발생하며 오버헤드는 메모리속도, 레지스터수 따라 시스템마다 다름
- 인터럽트
- 현재 실행되는 프로세스와 별도로 외부에서 발생되는 여러 종류의 이벤트에 의해 발생
- 인터럽트 예
- 입출력 인터럽트
- 클록 인터럽트
- 트랩
- 부적절한 파일접근 또는 현재 실행중인 프로세스에 의해 발생되는 오류나 예외 상황으로 발생
3주차 2강
스레드
- 스레드 개요
- 프로세스에서 실행 제어만 분리한 실행 단위
- 경량 프로세스 라고도 부름
- 프로세서를 사용하는 기본단위, 명령어를 독립적으로 실행할수있는 하나의 제어흐름
- 작업 : 스레드의 그룹 환경
- 같은 그룹의 스레드와 코드, 주소공간, 운영체제의 자원 공유
- 프로세스는 스레드를 하나 이상 가짐
- 스레드 실행시의 상태(실행, 준비 등)
- 실행 스택
- 지역변수와 스레드의 특정 데이터를 저장하기 위한 스레드별 정적 저장소
- 프로세스의 다른 스레드가 공유하는 메모리, 자원 접근, 스레드 실행환경정보 (문맥정보)
- 스레드의 장점
- 스레드들은 공통 목적 달성을 위해 병렬로 수행
- 자원공유하며 한 프로세스에서 동시 작업가능
- 시스템 성능과 효율 향상
- 하나의 프로세스가 다른 프로세서에서 프로그램의 다른 부분을 동시에 실행가능
- 응용 프로그램 하나가 비슷한 작업 여러개 수행
- 사용자에 대한 응답성 증가
- 프로세스의 자원과 메모리 공유가능
- 경제성
- 다중 프로세서 구조 활용가능
- 운영체제는 단일 프로세스에서 단일 스레드 실행과 다중 스레드 실행 지원
- 단일 스레드 프로세스
- 전통적인 방식
- 다중 스레드 프로세스
- 프로세스 하나가 여러 스레드 실행
- 다중 스레드의 특징
- 각 스레드를 별도의 프로세서에서 실행하는 측면 다중 프로세싱과 같은 의미
- 자원 생성과 관리의 중복성을 최소화하여 실행능력향상
- 각 스레드는 커널 개입없이 서로 통신 가능 독립적 실행
- 서버에서 많은 요청을 효과적으로 처리
- 프로세스를 새로 생성하는 것보다 기존 프로세스에서 스레드를 생성하는것이 빠름
- 프로세스의 상대적인 무게를 줄여 효율 극대화
- 단일 스레드와 다중 스레드 모델
- 단일 스레드 프로세스 모델
- 프로세스를 하나의 스레드, 스레드가 가진 레지스터와 스택으로 표현
- 다중 스레드 프로세스 모델
- 프로세스를 각각의 스레드와 고유의 레지스터, 스택으로 표현, 프로세스 주소 영역을 모든 스레드가 공유
- 스레드 용법
- 단일 사용자 다중 처리 시스템 환경
- 시스템 호출이 아닌 사용자 라이브러리 수준에서 스레드 개념을 제공, 빠른 속도
- 프로그램에 비동기적 요소를 구현
- 공유 메모리 형태의 다중 프로세서 시스템 환경
- 프로그램 공유 메모리에 저장, 스레드를 프로세서에 할당, 병렬처리하여 성능 향상
- 스레드 단점
- 사용자 수준 스레드는 커널 자체가 스레드 하나로 구성, 시스템 호출 실행시 스레드가 포함된 전체작업이 호출결과가 돌아올때까지 대기
- 스레드의 상태 변화
- 스레드의 특징
- 준비,실행,대기,종료 상태로 구분
- 한 프로세스에 있는 스레드는 순차적으로 실행, 자신의 정보를 위한 프로그램카운터와 스택을 가짐
- 스레드 생성시 운영체제는 부모 프로세스와 공유할 자원을 초기화 하지않음
- 하나의 스레드가 대기일대 다른 스레드 실행가능
- 서로 독립적이지 않다
- 보호문제
- 프로세서는 다수의 사용자에게서 발생, 경쟁적인 자원 요구와 서로 다른 관계 유지
- 스레드는 한명의 사용자가 여러 스레드를 가진 작업 하나를 소유
- 스레드의 상태
- 대기
- 스레드가 이벤트를 기다릴때, 입출력 작업이 완료될때까지 대기상태
- 자신의 정보(프로그램카운터, 스택포인터)를 실행 스택에 저장
- 준비
- 스레드가 프로세서에 의해 실행될수있는 상태
- 스레드를 대기시킨 이벤트 발생시 준비 리스트에 삽입
- 실행
- 스레드가 프로세서를 점유하여 실행중인 활성화 상태
- 종료
- 스레드가 작업을 종료하면 자원을 해제, 레지스터 문맥과 스택할당 제거
- 스레드 구현
- 사용자 수준 스레드
- 커널 스레드를 지원하지 않는 운영체제에서 사용
- 스레드 라이브러리
- 스레드 생성, 종료, 문맥 교환을 위한 코드, 동기화, 메모리 할당 정보들을 포함, 프로시저 호출로 수행
- 사용자 수준 스레드 장점
- 커널 도움 없이 실행
- 여러 수준에서 스레드 구현 가능
- 운영체제에 따라 다르며 일반적으로 사용자 수준과 커널 수준 혼합한 방식중 하나를 사용
- 사용자 수준 스레드 이용시 장점
- 높은 이식성
- 오버헤드 감소
- 스케줄링의 유연성
- 사용자 수준 스레드 이용시 단점
- 시스템의 동시성 지원 불가
- 시스템 규모 확장 제약
- 스레드 간 보호 어려움
- 커널 수준 스레드
- 사용자 수준 스레드의 한계를 해결하기위해 스레드마다 프로세서를 매핑하는 일대일 스레드 매핑 지원
- 커널에 의해 생성,삭제, 자신만의 커널 스택을 가짐
- 사용자 영역에는 스레드 관리를 위한 코드가 없음
- 커널 지원 부족 문제 해결
- 커널에 의한 직접적인 스케줄링과 실행으로 사용자 수준 스레드의 문제를 해결하여 시스템 성능 향상
- 병렬 실행 가능
- 하나가 시스템 호출시 다른 스레드가 중단되는 다대일 방식의 문제 해결
- 시스템 규모 확장이 쉬우며 처리량 늘림
- 커널 모드 전환 오버헤드
- 커널 스레드 생성으로 오버헤드 증가로 응용 프로그램 성능저하를 막기 위해 스레드 수를 제한해야함
- 이식성 떨어짐
- 시스템 변경시 제공된 스레드 API를 사용하여 프로그램 수정
- 제한적인 자원으로 무한정 생성 할수없음
- 혼합형 스레드 지원
- 스레드 생성은 사용자 영역에서 여러개의 사용자 수준 스레드에 여러개의 커널 스레드가 매핑되는 다대다 스레드 모델
- 사용자 수준 스레드 생성시 커널 수준 스레드 생성, 성능 감소
- 시스템 호출시 다른 스레드가 중단되는 문제를 해결하기 위한 방법
- 다대다 모델 구현 운영체제 : 솔라리스
4주차 1강
병행 프로세스와 상호배제 1
- 병행 프로세스 개념
- 프로세스 여러개가 동시에 실행
- 독립적으로 작업수행, 다른 프로세스 협력
- 프로세스간 교신 필요
- 비동기적 병행 프로세스
- 프로세스 간 교신시 동기화되어야 하는 프로세스
- 상호작용
- 제한된 자원을 공유하기 위함, 상호작용하는 프로세스는 순서에 맞게 동기화되어야 함
- 병행 프로세스의 과제
- 병행성
- 다수의 프로세서를 이용하여 작업수행, 다중 프로세싱 시스템, 분산처리환경, 다중 프로그래밍 운영체제에서 매우 중요
- 다중 프로세싱 시스템
- 각 프로세서가 갖는 오버헤드를 감소, 프로세서의 유효성 증대
- 다중 프로세싱 시스템의 구현을 위한 해결문제
- 공유자원을 상호 배타적으로 사용해야함
- 프린터, 통신망은 한 순간에 한 프로세스만 사용해야함
- 병행 프로세서들 사이는 협력 또는 동기화 되어야함
- 상호 배제도 동기화의 형태임
- 두 프로세스 사이에 데이터 교환을 위한 통신이 이루어져야함
- 프로세서는 결정성을 확보해야함
- 동시에 수행되는 다른 프로세스 실행속도 관계없이 항상 일정한 결과보장
- 교착상태를 해결하고 병행 프로세스들의 병렬처리 극대화
- 실행 검증문제
- 병행 프로세스 수행과정에서 발생한 상호 배제를 보장해야함
- 프로세스가 실행중일대 다른 프로세스가 그작업에 관련된 작업을 수행할수없음
- 다중 프로세싱 시스템은 프로세스 동기화 알고리즘 필요
- 프로세서들이 모든 입출력 장치와 메모리 참조 가능
- 동시에 동일한 자원에 접근시 충돌 발생하므로 이를 해결
- 선행 그래프
- 프로세스는 프로세스 집합과 이들의 선행제약의 두가지 요소로 정의
- 선행 제약
- 프로세스가 순서대로 다른생토로 옮겨감
- 두 프로세스간의 선행 관계가 없으면 독립적이므로 병행 실행가능
- 선행 그래프
- 제약을 규칙적(논리적)으로 표현한것
- 각 문장에 대응된 노드가 비순환 그래프를 이룸
- 산술 연산 수행 알고리즘
- 병행 수행을 하기위해 프로세서 안의 기능 단위를 여러개 두거나 프로세서를 여러개 사용해야함
- 프로세서를 여러개 사용시 여러 문장이 동시에 수행되어 수행시간을 줄일수있음
- 언어적 표현과 병행 문장
- 프로그램의 여러 문장의 선행관계 명시를 위해 두가지 언어구조 제시
- fork 와 join 구조
- 선행 그래프는 연산 선행제약을 정의하는데 유용하나 2차원이라 프로그래밍 언어에 사용하기 어려움
- 병행 문장
- 프로세스 하나가 여러가닥의 병렬프로세스로 퍼졌다가 다시 한가닥으로 뭉쳐지는것을 나타내는 고급언어 구조
상호배제와 동기화 1
- 상호배제와 동기화
- 상호배제
- 특정 공유자원을 한순간에 한 프로세스만 사용, 다른 프로세스는 접근할수없게 하는것
- 프로세스 간 동기화
- 공유자원을 동시에 사용하지 못하게 실행을 제어하는 기법
- 순차적 재사용 가능한 자원을 공유하기 위해 상호작용하는 프로세스 사이에서 나타남
- 병행 프로세스 간 상호작용
- 프로세스는 세가지 형태로 상호작용함
- 프로세스들이 서로 인지하지 못하는 경쟁관계 유지
- 프로세스들은 입출력버스를 비롯한 개체를 공유하는 단계에서 간접적으로 서로의 관계를 인식함
- 프로세스들은 서로를 인식하고 프로세스끼리 통신할수있는 기본 함수를 가짐
- 생산자/소비자 프로세스
- 생산자/소비자, 판독자/기록자(입력기/출력기) 문제
- 여러 프로세스가 공통 작업 수행을 위해 서로 협동하고, 병행 처리되는 대표적 예
- 상호배제와 동기화가 필요하며 세마포어를 이용해 구현
- 생산자와 소비자 프로세서들을 병행 실행하기 위해 공유버퍼가 필요
- 생산자의 데이터 생산 속도와 소비자의 데이터 소비속도는 서로 독립적이므로 버퍼가 필요
- 생산자가 이미 채워진 버퍼에 더 채우거나, 소비자가 빈 버퍼에서 데이터 꺼낼때 문제발생
- 프로세스 간 통신의 예
- 생산자/소비자 관계에서 한 프로세스가 정보를 생산하면 다른 프로세스는 그 정보를 소비함
- 버퍼가 비었거나 꽉 차있을때 버퍼에 접근하는 것을 막기위해 생산자와 소비자가 동기화 되어야함
- 무한 버퍼 생산자/소비자 문제
- 버퍼의 크기에 제한을 두지 않으며 항상 버퍼에 빈자리가 존재
- 유한 버퍼 생산자/소비자 문제
- 크기가 고정된 버퍼 사용, 버퍼가 비었을시 소비자 대기, 버퍼가 가득차면 생산자 대기
- 공유 버퍼의 저장소를 두개의 논리적 포인터 in과 out을 사용한 순환 배열로 해결 가능
- 경쟁 상태
- 공유 데이터에 최종적으로 남는 데이터 결과를 보장할수없는 상황
- 여러 프로세스가 공유 데이터를 동시접근시, 공유 데이터 접근 순서에 따라 실행 결과가 달라지는 상황
- 접근 순서화 필요
- 방지하기위해 병행 프로세서들은 동기화가 실행되어야함
- 동기화 실행 방법
- 임계 영역
- 공유 변수를 어느 한순간에 한 프로세스만 조작 하도록함
- 상호 배제
- counter를 조작하는 부분을 임계영역으로 설정, 상호배제함
4주차 2강
병행 프로세스와 상호 배제 2
- 임계 영역 (Critical Section)
- 둘 이상의 프로세스가 공유할수없는 자원을 임계 자원이라하며, 프로그램에서 이를 이용하는 부분
- 한 프로세스가 임계영역에 들어가면 다른 모든 프로세스는 임계영역으로 진입 금지
- 다중 처리 시스템과 단일 처리시스템환경에 적용되는 하나의 실행 단위, 실행 구간을 의미
- 진입 상호 배제
- 임계 영역에 들어가기를 원하는 프로세스는 진입 상호배제를 수행해야함
- 임계 영역을 떠나는 프로세스는 출구 상호배제를 수행함으로써 다른 프로세스가 임계영역에 들어갈수있도록 함
- 프로세스들이 서로 협력하여 자원을 사용할수있도록 프로토콜을 설계하여 임계영역 문제 해결가능
- 집입영역(진입코드)
- 출구영역
- 잔류영역
- 임계영역을 해결하기 위해 세가지 요구를 만족해야함
- 상호 배제
- 한 프로세스가 임계영역에서 작업중에는 다른 프로세스는 임계영역에서 수행할수없다
- 진행
- 임계영역에서 작업중인 프로세스가 없고 다수의 프로세스가 진입시, 선정 알고리즘에 따라 대상 선정
- 다음 임계영역으로 들어갈 프로세스 선택은 무한정 미룰수없음
- 제한된 대기
- 한 프로세스가 임계영역을 요청시 수락되기까지 다른 프로세스 진입할수있는 회수제한
- 소프트 웨어적인 임계영역 문제해결
- 단일 프로세서 또는 메모리 공유하는 다중 처리 환경의 포로세서가 존재
- 알고리즘 1 (상호배제 단계 1 알고리즘)
- 데커 알고리즘
- 하드웨어 도움없이 상호배제 문제를 해결
- 특별한 하드웨어 명령문 필요하지않음
- 특별한 하드웨어 명령을 사용, 임계영역 문제를 해결가능
- 기계를 비교하거나 단어 내용을 검사 및 수정 하는 명령을 통해 해결
- testandset 을 이용한 상호배제 알고리즘
- testandset(a, b); 는 논리변수 b를 읽어 a에 복사하고 b를 참으로 하는 명령
- 단일 프로세서 또는 메모리를 공유하는 다중 처리 환경과 관계없이 적용되며, 간단하여 쉽게 적용된다는 장점
- 임계영역에 진입하려는 프로세스에 바쁜 대기 발생
- 무한 연기 가능성이 발생할수있지만, 프로세스가 많으면 거의 발생하지 않음
- 세마포어 (Semaphore)
- 음이 아닌 정수값을 갖는 플래그 변수
- 다익스트라가 상호배제의 문제를 극복하기 위해 제안함
- 세마포어의 유명한 예 '열차의 진행 가능 여부'를 나타내는 차단기
- 세마포어의 정의
- 프로세스 동기화 문제해결을 위한 두가지 연산(P,V)
- P : 네덜란드어 검사(Proberen) 의미, 프로세스 대기시키는 wait 동작, 임계영역 진입하기 위한 연산
- V : 네덜란드어 증가(Verhogen) 의미, 대기중 프로세스를 깨우는 신호를 보내는 동작, 임계영역 나오기 위한 연산
- S : 세마포어, P와 V에 의해서만 접근되는 변수
- 세마포어 사용
- 세마포어는 프로세스 n개의 임계영역 문제를 다루는데 사용
- 세마포어 S에 적용된 두연산 P,V 는 동시에 두가지 동작이 실행되는것을 예방하는 상호배제를 의미함
- n개의 포로세스는 1로 초기화된 공통 세마포어인 mutex를 공유
- 세마포어는 여러가지 동기화 문제를 다루는데 사용
- 세마포어의 중요특징은 단위적으로 수행된다는 점
- 단위적 수행
- 다중 프로세서인 경우 인터럽트 금지가 허용 불가능
- 모니터
- 프로그래밍 언어에서 제공되는 프로그래머 정의 연산자들의 집합으로 구성
- 프로그램 작성이 어려운 단점 극복
- 모니터의 형태 표현은 변수 선언으로 구성, 변수 값이 형태를 정의함
- 모니터의 구조
- 하나 이상의 프로시저와 초기화 코드, 공유 데이터로 구성된 소프트웨어 모듈로 이루어진 객체
- 모니터 밖에 있는 프로세스는 모니터에 있는 데이터 접근 불가
- 모니터 경계에서 한번에 한 프로세스만 진입하도록 제어, 상호 배제 원칙을 지킴
- 자원 반납시 모니터 진입 루틴 호출
- 모니터의 조건 변수
- 임계영역과 유사, 프로세스가 실행되는 동안 상호배제와 동기화를 제공
- 조건 임계영역으로 확장, 동기화를 위한 부수기법 필요
- wait 과 siganl 연산만이 호출 가능
정리하기
- 병행 프로세스
- 프로세스 여러개가 동시에 실행
- 독립적으로 수행 가능, 다른 프로세스와 협력
- 선행 제약
- 프로세스가 순서대로 다른 상태로 옮겨가는것
- 선행 그래프는 제약을 형식적으로 표현하는데 사용됨
- 프로그래머는 순차 프로세스의 개념을 이용, 여러 명령문 사이의 선행관계 기술가능
- 상호배제
- 한 프로세서가 작업중일대 나머지 프로세서들이 관련된 작업을 수행할수없게함
- 협조관계에 있는 순차 프로세스 집합체에서 상호배제는 필수
- 병행 명령
- 선행제약을 위해 forkdhk 병행 명령이라는 언어 구조 두개가 제안됨
- 병행 실행의 개념은 순차 프로세스 개념과 선행그래프 이용, 형식화됨
- 동기화의 문제점
- 상이한 동기화 문제점들은 병행 제어 문제들의 실례
- 새롭게 제안된 거의 모든 동기화 기법들은 검사를 위해 이 문제를 이용
- 세마포어
- 상호배제의 해결책의 단점으로 모두 바쁜 대기를 요구함
- 동기화 문제들을 해결하기위해 사용
- 임계영역과 모니터
- 운영체제는 타이밍 오류에 대처할수있는 수단 제공해야함
- 임계영역은 상호배제와 임의의 동기화 문제들을 안전하고 효과적으로 구현하기위해 사용
- 모니터는 추상 데이터 형태를 공유하기 위한 동기화 메커니즘 제공
'과제정리' 카테고리의 다른 글
자료구조 정리 (0) | 2020.05.27 |
---|---|
인터넷보안 정리 (0) | 2020.05.24 |
멀티미디어개론 정리 (0) | 2020.05.21 |
데이터 통신_4주차 2강 (0) | 2020.05.17 |
데이터 통신_4주차 1강 (0) | 2020.05.17 |
Comments