-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
운영체제 #17
Comments
프로세서와 프로세스의 차이
고아 프로세스와 좀비 프로세스고아 프로세스
좀비 프로세스
PCB 에 대해 설명
프로세스의 고유번호(PIN ; Process Identification Number) 스레드 장점
스레드 종류 2가지
프로세스와 스레드 차이( 작업을 실행할때 자원을 할당 하는 단위 위주 설명)
멀티 프로세스와 멀티 스레드 차이 (장단점 위주)멀티 프로세싱장점
멀티 스레드장점
단점
Tread Pool(스레드 풀) 이란 ?
사용 이유 :
단점
-- code stack heap 안에 뭐가 있는지 |
운영체제 개요
정의
목적
역할
프로그램 빌드 되는 과정 (링커와 로더)
링커 : 컴파일러가 프로그래밍 언어를 해석해서 기계어로 바꾸는 것이라면 링커는 컴파일러가 만든 결과물을 서로 연결시키는 역할을 함
로더 : 컴퓨터 운영체제의 일부분으로, 하드디스크와 같은 저장 장치에 있는 특정 프로그램을 찾아서 주기억장치에 적재하고, 그 프로그램이 실행되도록 하는 역할을 담당
로더의 기능
운영체제의 유형별 특징
일괄처리시스템(Batch Processing System)
다중프로그래밍 시스템(Multi-Programming System) : CPU 1개
시분할 시스템(Time Sharing System)
분산 처리 시스템
다중 처리 시스템 : CPU N개
여러개의 프로세서(CPU)를 이용해 신뢰성, 가용성, 컴퓨터 능력 증가등의 목적을 달성
비대칭 주 / 종 다중처리 시스템 : 마스터 프로세서가 주가 되어 관리, 마스터 프로세서는 연산과 입출력 관리를 하며, 슬레이브 프로세서는 연산만 가능
==> 형태가 단순하지만 마스터 프로세서에 부하가 많아 신뢰도, 자원 사용에는 비효율적
대칭 다중 처리 시스템 : 모든 프로세서 동일
==> 신뢰성이 높고 자원을 효율적으로 사용할수 있는 방식
프로세스와 스레드
프로세스 정의
실행 중인 프로그램 ( 주기억장치 ,CPU에서 실행 하는 단위 / 동적인 개념 )
비동기적(Asynchronous) 행위
==> 어떤 작업을 요청했을 때 그 작업이 종료될 때까지 기다리지 않고 다른 작업을 하고 있다가, 요청했던 작업이 종료되면 그에 대한 추가 작업을 수행하는 방식!
디스크에 저장되어 있던 실행 가능한 프로그램이 메모리에 적재되어 운영체제의 제어를 받는 상태이다.
운영체제에 존재하는 PCB(Process Control Block : 프로세스 제어 블록) 할당 받는 개체
프로세스 1개당 PCB 1개 존재
PCB(프로세스 제어블록) : 특정 프로세스에 대한 중요한 정보를 제공해 주는 데이터 블록
==> 프로세스를 생성 할때 만들어지며 주기억장치에 유지되며 운영체제 내에서 한 프로세스의 존재를 정의함, 프로세스의 실행이 종료되면 같이 삭제된다.
==> 커널이 프로세스 관리하는데 있어서 편리성을 위하여 프로세스마다 다르게 부여되는 번호 / 프로세스 생성될때 부여 됨
인터럽트 : 컴퓨터 시스템에서 발생하는 예외적인 사건을 신속히 처리하기 위한 기법으로, 인터럽트가 발생하면 해당 인터럽트 처리 루틴을 먼저 수행한 후 원래의 프로그램으로 되돌아 온다.
문맥교환( Context Switching )
( ex) 프로세스가 준비 -> 실행 / 실행 -> 준비 / )
==> 즉, CPU가 현재 처리 중인 프로세스의 PCB를 저장하고, 다른 PCB를 가져오는 것 !
스레드 ( Thread )
==> 어떤 프로그램을 실행시킨게 프로세스 인데, 그 프로세스는 운영체제로 부터 프로그램을 돌리기 위해 메모리를 포함해서 이것저것 할당 받는다. 그리고 스레드는 프로세스에 할당된 자원을 마구 써재낀다.
즉, 프로세스를 여러개로 나누면 스레드가 되는건데, 서로 프로세스에 할당된 자원을 함께 공유하며 처리
ex ) 수강신청을 100명이 동시에 하러 들어옴 -> A라는 사람이 수강신청을 하고 있을때 B라는 사람도 동시에 수강신청을 진행하는 것처럼 느껴짐 ( 여러 스레드 운용 )
100개의 스레드를 사용했을때 101번째 학생의 수강신청은 100개 스레드 중 하나가 비어서 일을 처리할 수 있는 상태가 될때까지 기다리면 된다.
스케줄링 ( Scheduling )
스케줄링 하는 이유
=> cpu 이용률 증가
=> 일의 처리량 향상
=> 반환시간
=> 대기시간
=> 응답시간
프로세스 스케줄링 종류
비선점 ( non-preemptive )
- 현재 실행중인 프로세스가 끝나야 다음 프로세스 CPU 를 할당
1) FCFS 스케줄링
- FIFO ( 준비큐에 도착한 순서에 따라 CPU를 할당 받는다)
2) SJF 스케줄링( Shortest Job First )
- 준비상태에 대기 중인 작업 중에서 CPU 사용시간이 가장 짧다고 판정된 것을 먼저 수행
3) HRN 스케줄링
==> (대기시간 + 서비스 받을 시간 ) / 서비스 받을 시간 ==> 계산한 것이 크다면 우선순위 높음 판정
선점 ( preemptive )
- 현재 실행중인 프로세스보다 높은 우선순위를 가진 프로세스가 등장하면 스케줄러에 의해 실행 순서 조절
1) SRT 스케줄링 ( Shortest Remaining Time First )
- SJF 에 선점 정책을 도입
**에이징 기법 : **
2) Round Robin
3) 다단계 큐 알고리즘
4) 다단계 피드백 큐 알고리즘
병행 프로세스와 교착상태
임계구역 ( Critical Section )
다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서는 하나의 프로세스만 자원 또는 데이터를 사용하도록 지정된 공유 자원을 의미
상호배제 ( Mutual Exclusion ) 와 동기화
세마포어 ( Semaphore )
모니터 ( Monitor)
교착상태(Deadlock)
==> 다중프로그래밍에서 한정된 자원을 사용할때 발생!
Deadlock 발생 조건 : 한 시스템 내에서 다음의 네가지 조건이 동시에 성립할 때 발생
교착상태 처리 기법
교착상태 예방(Prevention) : 교착상태 발생 조건 들 중 하나를 제거함으로써 해결 / 자원 낭비가 심함!
상호배제 부정 : 여러개의 프로세스가 공유 자원을 사용할수 있도록 ///3개 아닌가? 확인할것 => 제외해야 되는지 확인 !
점유와 대기조건 방지 : 프로세스가 실행되기 전 필요한 모든 자원을 할당
비선점 조건의 방지 : 자원을 점유하고 있는 프로세스가 다른 자원을 요구할때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 함
순환 대기 조건의 방지 : 자원에 고유한 번호를 할당하고, 번호 순서대로 자원을 요구하도록 함
교착상태 회피( Avoidance ) : 교착 상태가 발생하면 피해나가는 방법 / 은행원 알고리즘
프로세스가 자원을 요구할때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지를 사전에 검사하여 교착 상태를 회피하는 기법
안전상태에 있으면 자원을 할당하고, 그렇지 않으면 다른 프로세스들이 자원을 해지할때 까지 대기함
교착 상태 탐지 ( Detection ) : 자원 할당 그래프를 통해 교착 상태 탐지
교착 상태로부터 회복 ( Recovery ) : 교착 상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제함으로써 회복하는 것을 의미 / 프로세스 종료하는 방법
The text was updated successfully, but these errors were encountered: