[정보처리기사 필기] 4과목 : 프로그래밍 언어 활용
4과목 / 프로그래밍 언어 활용
1. 결합도, 응집도
2. IPv6와 IPv4 차이
3. OSI 7계층
4. TCP와 UDP
5. 쉘과 커널
6. 프로세스 스케줄링 (SJF vs HRN)
7. 프로그래밍 언어
Plus. 교착상태, 기억장치 배치 전략
1. 결합도 ↓, 응집도 ↑
모듈의 독립성을 높히기 위해 결합도를 약하게, 응집도를 강하게 해야한다.
모듈이란?
: 소프트웨어의 성능을 향상시키거나 수정 및 재사용을 용이하게 하기 위해 기능 단위로 분해한 것.
* 독립성이 높은 모듈의 장점
1. 모듈을 수정하다더라도 다른 모듈들에게는 거의 영향을 미치지 않는다.
2. 오류가 발생하더라도 쉽게 발견하고 수정할 수 있다.
→ 재사용 용이
결합도 (Coupling)
: 모듈간에 상호 의존하는 정도, 두 모듈 사이의 연관 관계를 의미.
즉, 모듈 간의 관계 = 모듈 간의 서로 연관이 없을수록 독립적.
*내공 외제스데
응집도 (Cohesion)
: 모듈 내부 요소들이 서로 관련되어 있는 정도를 의미.
즉, 모듈 내의 관계 = 모듈 내는 끈끈할수록 독립적.
*우눈시절 통순기
* 결합도와 응집도
종류 | 내용 |
내용 결합도 (가장 강함) (Content Coupling) |
* 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정할때의 결합도 * 다른 모듈 내부로 제어가 이동하는 경우 포함.(like 스파게티 코드) |
공통 결합도 (Common Coupling) |
* 공유되는 공통 데이터 영억을 여러 모듈이 사용할 때의 결합도 * 공통 데이터 영역의 내용을 변경 시 이를 사용하는 모든 모듈에 영향을 미쳐 모듈의 독립성을 약하게 만듬 |
외부 결합도 (Extermal Coupling) |
* 모듈에서 선언한 데이터를 외부의 다른 모듈에서 참조할 때의 결합도 * 참조되는 데이터의 범위를 각 모듈에서 제한 |
제어 결합도 (Control Coupling) |
* 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용하여 통신하거나 제어 요소를 전달하는 결합도 * 권리 전도 현상 : 하위 모듈이 상위 모듈에게 처리 명령을 내리는 현상 |
스탬프 결합도 (Stamp Coupling) |
* 모듈간의 인터페이스가 배열이나 레코드 등의 자료구조가 전달 할 때의 결합도 * 두 모듈이 동일한 자료 구조를 조회 |
자료 결합도 = 데이터 결합도 (가장 약함) (Data Coupling) |
* 모듈 간의 인터페이스가 자료 요소로만 구성 될 때의 결합도 * 모듈은 호출 시 매개변수나 인수로 데이터를 넘겨주고 처리 결과를 반환 * 값만 호출 |
기능적 응집도 (가장 높음) (Functional Cohesion) |
모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우 |
순차적 응집도 (Sequential Cohesion) |
모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우 |
통신적 응집도 (Communication Cohesion) |
동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우 |
절차적 응집도 (Procedural Cohesion) |
모듈이 다수의 관련 기능을 가질 때 모듈안의 구성 요소들이 그 기능을 순차적으로 수행 |
시간적 응집도 (Temporal Cohesion) |
연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리 할 경우 |
논리적 응집도 (Logical Cohesion) |
유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우 |
우연적 응집도(가장 낮음) (Coincidental Cohesion) |
모듈 내부의 각 구성요소들이 연관이 없을 경우 |
2. IPv6 와 IPv4
IP 주소 (Internet Protocal Address)
: 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신하기 위해서 사용하는 고유 주소.
*IPv4가 새로 부여할 수 있는 주소 부족 이슈 발생 → IPv6 탄생
- 자료 전송 속도가 더 빨라짐
- 보안성이 강화됨
- 확장성이 용이해짐
IPv4 | IPv6 | |
전송방식 | *유니캐스트 (Unicast) *멀티캐스트 (Multicast) *브로드캐스트(Broadcast) |
*유니캐스트 (Unicast) *멀티캐스트 (Multicast) *애니캐스트(Anycast) ("애니멀"로 외우기) |
주소길이 | 32bit | 128bit |
표시 방법 | 8bit씩 4부분 (ex) 192.168.10.12) | 16bit씩 8부분 (16진수) |
주소 할당 | 비 순차적 할당 | 순차적으로 할당 |
보안기능 | 보안기능x (IPsec, SSL, SHTTP 사용) | 인증 및 보안 기능 포함 |
확장성 용이 | ||
헤더크기 | 20~40byte 가변 | 40byte 고정 |
패킷 크기 고정(64bit) | 임의로 큰 크기의 패킷을 주고 받을 수 있음. |
*브로드캐스트(Broadcast)
: 같은 네트워크에 있는 모든 장비들에게 보내는 통신
*유니캐스트 (Unicast)
: 특정한 한 대상에게만 보냄 1:1 통신
*멀티캐스트 (Multicast)
: 특정 그룹을 지정해서 해당 그룹원에게만 보냄 1: 다 통신
*애니캐스트(Anycast)
: 가장 가까운 1명에게만 전송
- 주소변환 기능
- 듀얼스택 : 2가지를 모두 처리
- 터널링 : 감싸서 보냄
- 변환 : IPv4 → IPv6로 변환, IPv6 → IPv4로 변환
3. OSI 7계층
하위 계층 물리계층
(Physicall Layer)* 전송에 필요한 두 장치간의 실제 접속과 절단 등에 필요한
전송 매체의 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙 정의.
* RS-232C 등
"물리적 전송 매체"
*허브, 리피터데이터 링크 계층
(Data Link Layer)* 2개의 인접한 개발 시스템들 간에 신뢰성있고 효율적인 정보 전송을 할 있도록 함.
* 흐름제어, 프레임 동기화, 오류제어, 순서 제어 기능을 감당
* HDLC, LAPB, PPP, LLC 등
"인접한 노드들 간 신뢰성 있는 정보 전달"
*브릿지, 스위치네트워크 계층
(Network Layer)* 개방 시스템들 간의 네트워크 연결관리 (네트워크 연결을 설정, 유지, 해제)
데이터 교환 및 중계 기능 담당
* 경로 설정(Routing), 트래픽제어, 패킷정보 전송
* X.25, UDP, TCP 등
"개방 시스템 간 네트워크 연결 관리"
*라우터
*IP, ICMP, ARP, RARP상위계층 전송 계층
(Transport Layer)* 종단 시스템 (End to End) 간에 투명한 데이터 전송이 가능하게 함
* 전송 연결 설정, 데이터 전송, 연결해제 기능.
* 주소 설정, 다중화, 오류제어, 흐름제어
* TCP, UDP 등
*게이트 웨이세션 계층
(Session Layer)* 송수신측 간의 관련성을 유지하고 대화 제어를 담당.
* 대화 구성 및 동기제어, 데이터 교환 관리 기능
* 체크점(=동기점) : 오류가 있는 데이터의 회복을 위해 사용되는 것,
-> 소동기점과 대동 기점이 있음.
"대화 세션을 열어줌"표현 계층
(Presentation Layer)* 응용 계층으로부터 받은 데이터를 세션 계층에 맞게
세션 계층에서 받은 데이터는 응용계층에 맞게 변환.
* 코드변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보형식(포맷), 문맥관리 기능
"형태를 변환하는 기능"응용 계층
(Application Layer)* 사용자 (응용프로그램)이 OSI 환경에 접근 할 수 있도록 서비스 제공
"응용프로그램이 접근할 수 있는 서비스 제공"
68. OSI-7 계층에서 종단 간 신뢰성 있고, 효율적인 데이터를 전송하기 위해 오류 검출과 복구, 흐름제어를 수행하는 계층은? 1) 전송계층 2) 세션계층 3) 표현계층 4) 응용계층 (2020년 1, 2회 정보처리기사 필기 기출) |
4. TCP와 UDP
TCP/IP (Transmission Control Protocol / Internet Protocol)
: 인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고 받을 수 있게 하는 표준 프로토콜.
* 1대 1로 신뢰성있게 경로를 확립하여 통신.
UDP (Useer Datagram Protocol)
: (데이터 전송 전 연결설정이 없으므로 )신뢰성은 낮지만 속도는 빠름
※ 프로토콜 : 일졸의 약속된 규칙.
프로토콜의 3요소
구문, 의미, 타이밍
프로토콜 종류 | TCP | UDP |
연결 방식 | 연결형 서비스 | 비연결형 서비스 |
패킷 교환 방식 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 전송 순서 보장 | 전송 순서가 바뀔수 있음 |
수신 여부 확인 | 수신 여부 O | 수신여부 확인 X |
x통신 방식 | 1:1 통신 | 1:1 OR 1: N OR N : N 통신 |
신뢰성 | 높다 | 낮다 |
속도 | 느리다 | 빠르다 |
※ 논리주소 : IP
※ 물리주소 : Mac
ARP (address Resolution Protocal)
: IP를 MAC로 변환해주는 프로토콜
RARP
: MAC를 다시 IP로 변환해주는 프로토콜
ICMP
: 네트워크를 진단하는 프로토콜. 어떤 데이터를 전송하는 중간에 전송오류로 실패했을때 통보에주는 프로토콜
* 오류제어, 흐름제어, 전송에러 제어로 신뢰성 있는 데이터를 전송하는 계층은?
: 전송계층, 데이터 링크 계층
이 둘의 차이는 전송계층은 - 양 종단간의 전달, 데이터링크는 - 인접한 노드들 간의 데이터 전달
포트번호
69. TCP 프로토콜에 대한 설명으로 거리가 먼 것은? (1) 신뢰성이 있는 연결 지향형 전달 서비스이다. (2) 기본 헤더 크기는 100 byte 이고 160 byte 까지 확장 가능하다. : TCP의 기본 헤더 크기는 최소 20 byte, 최대 60 byte/UD는 8byte (3) 스트림 전송 기능을 제공한다. (4) 순서제어, 오류제어, 흐름제어 기능을 제공한다. (2020 정보처리기사 필기 기출문제) |
76. UDP 특성에 해당되는 것은? (1) 데이터 전송 후, ACK를 받는다. : TCP (2) 송신 중에 링크를 유지 관리하므로 신뢰성이 높다. : TCP (3) 흐름제어나 순서제어가 없어 전송속도가 빠르다. (4) 제어를 위한 오버헤드가 크다. : TCP (2020 정보처리기사 필기 기출문제) |
67. TCP/IP 계층 구조에서 IP의 동작 과정에서의 전송 오류가 발생하는 경우를 대배해 오류 정보를 전송하는 목적으로 사용하는 프로토콜은? (1) ECP (Error Checking Protocol) (2) ARP (Address Reslution Protocol) (3) ICMP (Internet Control Message Protocol) (4) PPP (Point-to-point Prorocol) (2022 1회 정보처리기사 필기 기출문제) |
5. 쉘과 커널
운영체제 (OS : Operating System)
: 컴퓨터 시스템의 자원들을 효율적으로 관리하여,
사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 프로그램의 모임.
* CPU, 메모리 공간, 기억장치 입출력 장치 등의 자원 관리 역할.
*쉘 : 인터페이스, 커널 :내부로 이루어져 있음.
*운영체제의 종류
- Window
- Linux(리눅스)
- Unix (유닉스)
- MacOS
- Android (안드로이드)
쉘 (Shell) - 껍데기
: 사용자 명령에 대한 처리 담당
ex) 사용자를 맞이하는 비서의 역할.
커널 (Kernel) - 알맹이
: 운영체제의 내부에서 하드웨어 자원을 관리하는 중심 역할
ex) 사장님
6. 프로세스 스케줄링
프로세스 스케줄링이란?
: 프로세스가 생성되어서 실행 될 때, 필요로하는 시스템의 여러 자원을 해당 프로세스에 할당하는 작업.
※ 프로세스란? 직접 코드를 짜서 프로그램을 만들고, 그것을 실행시키면 프로그램은 프로세스가 됨.
→ 요약하면, 여러 프로세스들 중 이번에 어떤것을 실행시키고, 다음엔 어떤 것을 실행 시킬지 결정하는 방법.
선점 기법
: 프로세스가 자원을 할당받아서 돌고있을때, 우선순위가 높은 다른 프로세스가 자원을 강제로 뺏어서 자기가 도는 것.
*Round Robin : 그냥 순차적으로 반복 (평균 반환시간 = (전체대기시간 + 전체실행시간) / 프로세스 수 )
*SRT : 실행시간 짧은거 순
*다단계 큐 (MLQ)
*다단계 피드백 큐 : 마지막 라운드 로빈 실행 (MFQ)
비선점 기법
: 이미 할당되면 다른 프로세스가 강제로 빼앗을 수 없는 것.
* SJF, HRN, 우선순위, 기한부 등
SFJ (Shortest Job First)
: 실행 시간이 가장 짧은 프로세스를 먼저 실행 시킴.
HRN (Highest Response-ratio Next)
: SFJ의 단점을 보완하기 위해 만들어짐.
(짧은걸 무조건 먼저 실행 시키기때문에 실행 시간이 길면 너무 오래 기다리게 될수 있으므로 새롭게 우선순위를 구하는 공식을 만듬.)
대기시간과, 실행시간을 고려하여 우선순위 선정방식
대기시간이 ↑ : 결과값인 우선순위가 큰 값으로 나옴 = 먼저 실행 시켜줌.
HRN 우선순위 계산 공식 = (대기시간 + 서비스 (실행) 시간) / 서비스 (실행) 시간
실행시간이 ↓ : 나누는 값이 작아지기 때문에 우선순위가 상대적으로 커짐 = 먼저 실행
즉, 결과값이 높을 수록 우선순위가 ↑ = 먼저 실행
관련기출)
66. HRN 방식으로 스케줄링 할 경우, 입력된 작업이 다음과 같을 때 처리되는 작업 순서로 옳은 것은? (1) A->B->C->D (2) A->C->B->D (3) D->B->C->A (4) D->A->B->C (2020년 정보처리기사 필기 기출문제) 해설) A : (5+20) / 20 = 1.25 B : (40+20) / 20 = 3 C : (15+45) /45 = 1.3333... D : (20 + 2) / 2 = 11 |
7. 페이지부재 알고리즘
페이지란?
: 가상 기억 장치를 모두 같은 크기의 블록으로 나눈 단위.
※ 가상기억 장지란? 실제로 메모리가 크지 않더라도 가상으로 몇 GB 크기를 가진것처럼 추상화 한다.
ex) 인터넷 사용 시 크롬, 워드, 게임등을 동시에 열었을때 각 프로그램들에 가상 메모리를 할당해주기 때문에 한번에 열수 있음
페이지 부재(Page Fault) 란?
: CPU에서 처리를 해주기 위해 호출했을때 해당 데이터가 메모리상에 존재하지 않는 것.
※ 페이지 부재가 많이 발생하게되면 스레싱(Thrashing) 현상이 나타나게 된다.
※ 스레싱 : CPU 이용율이 급격하게 떨어지는 현상.
알고리즘 종류
* FIFO( First In First Out; 선입선출 - 가장 오래있던것을 교체 : 시험에 가장 많이 출제) / belady's Anomaly 현상 발생
* LRU (Least Recently Used) - 최근에 가장 오랫동안 사용하지 않은 페이지 교체
* LFU (Least Frequently Used) - 사용빈도가 가장 적은 페이지 교체
* NUR (Not Used Recently) - 최근에 사용하지 않은 페이지 교체(참조비트, 변형비트 필요)
* SCR(Second Chance Replacement) - FIFO 를 개선한 알고리즘
* OPT(Optimal page replacement) - 이후에 가장 오랫동안 사용되지 않을 페이지를 먼저 교체(이론상으로만 존재)
관련기출 ) 문제풀이 방법
77. 다음의 페이지 참조 열 (Page reference string) 에 대해 페이지 교체 기법으로 선입선출 알고리즘을 사용할 경우 페이지 부재 (Page Fault) 횟수는? (단, 할당된 페이지 프레임 수는 3이고, 처음에는 모든 프레임이 비어있다.) <페이지 참조 열> 7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0 (1) 13 (2) 14 (3) 15 (4) 20 (2020년 정보처리기사 필기 기출문제) |
페이지 참조 열 | 7 | 0 | 1 | 2 | 0 | 3 | 0 | 4 | 2 | 3 | 0 | 3 | 2 | 1 | 2 | 0 | 1 | 7 | 0 |
7 | 7 | ||||||||||||||||||
0 | |||||||||||||||||||
2 | 2 | 2 | 2 | 2 | |||||||||||||||
부재 발생 여부 |
O | O | O | O | X | O | O | O | O | O | O | X | X | O | O | X | X | O | O |
해설)
1. 할당된 페이지 수 3칸을 준비
2. 첫번째 칸부터 호출되는 칸을 채워감 : 7을 호출 -> 페이지 3개 다 비어있음으로 부재 발생, 첫번째칸에 "7" 넣기
3. 0, 1 도 마찬가지고 2개의 칸이 더 비워져있으므로 빈칸에 0,1 을 넣고 = 부재 발생
4. "2"를 호출해야하는데 2 존재 안함 + 칸이 다 채워져있음 = 가장 오래된 7 ( 2 순서일때 ,표를 보면 7이 3번, 0이 2번, 1이 1번
= 7일 제일 오래됨을 알 수 있음 ) -> 7을 지우고 2를 넣음. = 부재 발생
5. "0"을 호출하는데 페이지 안에 이미 0이 존재함으로 = 부재 발생 없음
6. "3"호출 : 존재 X, 자리없음 = 오래된 0을 지움 = 부재 발생
7. 이러한 방식으로 끝까지 실행 마지막 "7,0,2"가 페이지에 존재 + 일어난 부재는 총 14번
영상 강의 참조 : https://youtu.be/iwAeOjBVcsw?si=aa6ObO9d5ujvYTYx
8. 프로그래밍 언어
자료명 , 변수명 규칙
C, C++, JAVA 같은 프로그래밍 언어에서 변수를 선언할 때 데이터 타입과 변수명 규칙을 고려하여 선언이 필요.
[ C언어 자료형 ]
[ JAVA 언어 자료형 ]
C언어와 JAVA 자료형의 차이
* char
: JAVA : 2byte / C언어 : 1byte
(JAVA에서 유니코드를 지원하게 되면서 늘어남.)
*Long
: JAVA : 8byte / C언어 : 4byte
변수 명명 규칙
(C/C++, JAVA, Python 이 변수명 규칙이 크게 다르지 않음)
1. 영문 대/소문자 (A~Z, a~z), 숫자(0~9), _(언더스코어) 로 구성됨
2. 변수의 이름은 숫자로 시작 불가 (영문 or _ 로는 가능)
3. 변수 이름 사이에 공백 불가
4. 프로그래밍 언어에서 미리 정의된 키워드(예약어) 사용 불가
[if, for, while, continue, true false 등]
※ JAVA에서는 $도 허용됨
static
: 자료형 앞에 static이 있다면, 정적변수를 의미하며, 이는 실행하던 코드 부분이 끝나도 사라지지않음.
대부분의 변수는 { }안에서 선언되고 { }괄호를 벗어나면 사라짐.
BUT 프로그램이 처음 실행될 때, static 변수들을 0으로 초기화 시켜주는 과정이 존재.
78. C언어에서 배열 b[5]의 값은? static int b[9] = {1,2,3}; (1) 0 (2) 1 (3) 2 (4) 3 (2020년 정보처리기사 필기 기출문제) * 선언이 되면 빈공간은 0으로 초기화. (배열 9칸은 1,2,3,0,0,0,0,0,0) , static이 아니라면 : 쓰레기값 혹은 임의의 값. |
접근 제한자
접근 제한자란?
: 1과목에서 등장했던 캡슐화에서 정보들을 캡슐화하고, 공개를 원치않는 정보들은 은닉할 수 있을때,
클래스 안의 멤버들에게 접근을 어느 수준으로 허용할 것인지를 접근 제한자를 통해 정할 수 있다.
[JAVA언어의 접근 제한자]
- public : 모든 접근 허용
- protected : 같은 패키지 또는 자식 클래스에서 사용 가능 (일부만 허용됨)
- default : 같은 패키지에 속한 클래스에서만 사용 가능 (일부만 허용됨)
- private : 외부에서 사용 불가 (아예 접근을 허용하징지 않음)
※ C++은 public, protected, private만 존재
C언어, Java의 프로그램 실행 결과
for문 (반복문)
for ( i = 1; i < 10, i= i+2)
→ for ( 초기식; 조건식; 증감식)
: 1부터 시작해서 10보다 작을때까지 반복하는데 i는 +2씩 증가한다는 의미
printf("%d", sum);
: %d : 정수로 출력한다 는 뜻
sum : 변수명
78. 다음 C 프로그램의 결과 값은? int main (void) { int i; int sum = 0; for (i = 1; i <= 10; i=i+2) sum = sum+i; printf("%d", sum); } (1) 15 (2) 19 (3) 25 (4) 27 (2020.08.22 정보처리기사 필기 기출) |
*그외 C언어의 출력형식
Python의 슬라이싱
인덱스값 : 0부터 시작
lang = 'PYTHON'일때,
P Y T H O N 0 1 2 3 4 5 -6 -5 -4 -3 -2 -1
1) P를 출력하기위해서는
print(lang[0]) # 첫번째 값 출력
2) 마지막 값 을 출력하기 위해서는
print(lang[5]) OR print(lang[-1]) # 마지막 값 출력
슬라이싱 = 어디부터 : 어디까지
lang[start:end] #start부터 end 직전까지
[ 시작점 : 끝지점 : 증감식 ]
A[i : j : k]
→ i 위치부터 j 위치까지인데 j는 제외 (즉 j 까지) , k 만큼씩 움직이며 원소 추출.
* print(lang[1:6]) # 인덱스 1부터 6직전까지 = 인덱스1부터 인덱스 5까지
→ 실행결과 : YTHON
* print(lang[1:]) # 인덱스 1부터 끝까지
→ 실행결과 : YTHON
* print(lang[:4]) # 처음부터 인덱스 4 직전까지 = 처음부터 인덱스3까지
→ 실행결과 : PYTH
* print(lang[:]) # 처음부터 끝까지
→ 실행결과 : PYTHON
78. 다음 파이썬으로 구현된 프로그램의 실행 결과로 옳은 것은? >>> a=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90] >>> a[: 7: 2] 1) [20, 60] 2) [60, 20] 3) [0, 20, 40, 60] 4) [10, 30, 50, 70] (2020년 4회 정보처리기사 필기 기출) 해설) [: 7 : 2] 시작자리는 비어있음으로 처음부터를 의미. 끝자리는 7번째자리 직전까지므로 인덱스 6까지. 증감식은 2칸씩 0 ~ 60까지인데 2칸식 건너뛰기 때문에, 0, 20, 40, 60 |
Plus. 교착 상태
교착상태란?
: 프로세스들에게 자원을 할당해줄때,
때때로, 2개 이상의 프로세스가 서로가 서로에게 필요한 자원들을 점유하고, 상대방이 자원을 넘겨줄때까지 무한정 기다리는 것.
→ 서로 자원을 먼저 주기를 기다리는 상태
(총을 들고 서로 먼저 내려놓으라고 하는 느낌)
[교착 상태의 발생 조건]
- 상호 배제 (Mutual Exclusion) : 한 번에 한 개의 프로세스만이 공유 자원을 이용할 수 있어야 한다.
- 점유와 대기 (Hold and Wait) : 프로세스가 자원을 할당 받을 후 다른 프로세스에 할당된 자원을 기다려야한다.
- 비선점 (Non-preemption) : 프로세스에 할당된 자원은 사용이 끝날때까지 강제로 빼앗을 수 없다.
- 환형 대기 (Circular Wait) : 이미 자원을 가진 프로세스가 앞이나 뒤의 프로세스의 자원을 요구한다.
※ 위 조건들을 만족할때 교착상태가 발생. 공유자원을 한번에 한개의 프로세스만 사용할 수있는 상태인데,
한 프로세스가 자원을 갖고도 다른 자원의 할당을 요구하려고 하는 것. BUT 강제로 빼앗아 중재할 수도 없기때문에
이러지도 저러지도 못하는 교착상태에 빠진다.
67. 교착 상태 발생의 필요 충분 조건이 아닌 것은? (1) 상호 배제 (Mutual Exclusion) (2) 점유와 대기 (Hold and Wait) (3) 환형 대기 (Circular Wait) (4) 선점 (Preemption) : 비선점을 바꿔서 써둠 (2020.정보처리기사 필기 기출문제 ) |
[교착 상태의 해결 방법]
- 예방 (Prevention) : 교착상태 원인 중 하나를 제거한다.
- 회피 (Avoidance) : 교착 상태가 발생하려고 할 떄 그 가능성을 피해가는 방법이다. ex) 은행가 알고리즘
- 회복 (Recovery) : 교착 상태를 일으킨 프로스세를 종료하거나, 교착 상태의 프로세스가 점유한 자원을 선점해서 다른 프로세스에 할당하는 기법이다.
Plus. 기억장치 배치 전략
기억장치 배치(Placement) 전략 이란?
: 새로 반입되는 프로그램이나 데이터를 주 기억장치의 어디에 위치시킬 것인지 결정하는 전략
전략의 종류
- 최초적합 (First Fit) : 빈 영역 중 들어갈 수 있는 크기이며, 가장 첫번쨰 분할 영역에 배치한 것.
- 최적적합 (Best Fit) : 빈 영역 중 들어갈 수 있는 크기이며, 가장 딱 맞는 영역 (가장 작게 남기는 곳)
- 최악적합 (Worst Fit) : 낭비가 제일 심함 적합
ex) 10K를 각각 최초적합, 최적적합, 최악적합에 배치했을때,
영역 번호 | 영역 크기 | 상태 |
1 | 5 K | 공백 |
2 | 14 K | 공백 |
3 | 10 K | 사용 중 |
4 | 12 K | 공백 |
5 | 16 K | 공백 |
* 최초적합 : 2영역 (크기에 들어가면서 가장 첫번째 영역)
* 최적적합 : 4영역 (3이 제일 적합하지만 사용중임으로 그 다음 적합한 영역)
* 최악적합 : 5영역 (영역 중 빈공간을 가장 많이 남기는 영역)