본문 바로가기
자격증/정보처리기사

[정보처리기사 필기] Part 4 프로그래밍 언어 활용 Chapter 1 공통 모듈 구현 공부

by Mr.ticket 2023. 12. 22.
728x90

1. 메모

 

레지스터(Register) : CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치

 

문맥교환(Context Switching) : 이전 프로세스의 상태 레지스터의 내용을 보관하고, 다른 프로세스의 레지스터를 적재하는 과정

 

2. Point

 

결합도(Coupling) : 두 모듈 간의 상호작용, 또는 의존도 정도를 나타낸다.

 1. 내용 결합도(Content Coupliing) : 어떤 모듈을 호출하여 사용할 경우 그 모듈의 내용을 미리 조사하여 알고 있지 않으면 사용할 수 없는 경우에는 이들 모듈이 내용적으로 결합되어 있기 때문이며 이를 내용 결합도라 한다.

 2. 공통 결합도(Common Coupling) : 하나의 기억 장소에 공동의 자료 영역을 설정한 후, 한 모듈이 그 기억 장소에 자료를 전송하면 다른 모듈은 기억 장소를 조회하여 정보를 전달 받는 방식을 취할 때 발생하며, 전역 변수를 예로 들 수 있다.

 3. 외부 결합도(External Coupling) : 일련의 모듈들이 동일한 광역 데이터 아이템을 사용하면 외부 결합도가 되며, 외부 변수를 예로 들 수 있다.

 4. 제어 결합도(Control Coupling) : 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우를 말하며, 하위 모듈에서 상위 모듈로 제어 신호가 이동하여 상위 모듈에게 처리 명령을 부여하는 권리 전도 현상이 발생하는 결합도이다.

 5. 스탬프 결합도(Stamp Coupling) : 한 그룹의 모듈들이 동일한 비광역 데이터 구조를 사용하면 스탬프 결합도가 될 수 있다. 모듈 간의 불필요한 연관 관계를 형성하기 때문에 가능한 회피하는 것이 좋다.

 6. 자료 결합도(Data Coupling) : 가장 바람직한 결합도에 해당한다.

 

응집도(Cohesion) : 한 모듈 내에 있는 처리 요소들 사이의 기능적인 연관 정도를 나타낸다.

 1. 우연적 응집도(Coincidental Cohesion) : 모듈 내부의 서로 관계없는 각 요소들이 모인 경우

 2. 논리적 응집도(Logical Cohesion) : 유사한 성격을 가지거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우

 3. 시간적 응집도(Temporal Cohesion) : 모듈 내 구성 요소들이 서로 다른 기능을 같은 시간대에 함께 실행하는 경우

 4. 절차적 응집도(Procedural Cohesion) : 다수의 관련 기능을 수행하고 기능들을 순차적으로 수행하는 경우

 5. 통신적 응집도(Communicational Cohesion) : 동일한 입력과 출력을 사용하는 소작업들이 모인 모듈

 6. 순차적 응집도(Sequential Cohesion) : 실행되는 순서가 서로 밀접한 관계를 갖는 기능을 모아 한 모듈로 구성한 것

 7. 기능적 응집도(Functional Cohesion) : 모듈 내의 모든 요소가 한 가지 기능을 수행하기 위해 구성되는 경우로 가장 바람직한 응집도에 해당한다.

 

프로세스의 상태

 - 생성(New) : 작업이 제출되어 스풀 공간에 수록

 - 준비(Ready) : 중앙처리장치를 사용 가능한 상태

 - 실행(Run) : 프로세스가 중앙처리장치를 차지하고 있는 상태

 - 완료(Exit) : 중앙처리장치를 할당받아 주어진 시간 내에 수행을 종료한 상태

 - 대기(Block) : 입출력과 같은 사건으로 인하여 중앙처리장치를 양도하고 입출력 완료 시까지 대기 큐에서 대기하고 있는 상태

 - Dispatch : 준비 상태의 프로세스들 중에서 우선순위가 가장 높은 프로세스를 선정하여 중앙처리장치를 할당함으로써 실행 상태로 전환

 - Timer Runout : 중앙처리장치의 지정된 할당 시간을 모두 사용한 프로세스를 다른 프로세스를 위해 다시 준비 상태로 전환

 - Block : 실행 중인 프로세스가 입출력 명령을 만나면 입출력 전용 프로세서에게 중앙처리장치를 스스로 양도하고 자신은 대기 상태로 전환

 - Wake Up : 입출력 완료를 기다리다가 입출력 완료 신호가 들어오면 대기 중인 프로세스는 준비 상태로 전환

 

스레드의 특징

 - 프로세스의 구성은 실행 부분과 실행 환경 부분으로 분리할 수 있으며, 스레드는 프로세스의 실행 부분을 담당하여 실행의 기본 단위가 된다.

 - 입출력 자원의 할당에는 관계하지 않고, 중앙처리장치 스케줄링의 단위로만 사용되는 경량 프로세스

 - 명령어를 독립적으로 실행할 수 있는 하나의 제어 흐름

 - 스레드는 프로세스 자원을 공유하지만, 레지스터와 스택은 독자적으로 갖는다.

 - 프로세스 스케줄링에 따른 프로세스 문맥교환의 부담을 줄여서 성능을 향상시키기 위한 프로세스의 다른 표현 방식이라 할 수 있다.

 

FCFS(Fisrt Come Fisrt Service) : 대표적인 비선점형 스케줄링 기법으로 대기 리스트에 가장 먼저 도착한 프로세스 순서대로 CPU를 할당한다.

 

SJF(Shortest Job Fisrt) : FCFS를 개선한 기법으로 대기 리스트의 프로세스들 중 작업이 끝나기까지의 실행 시간 추정치가 가장 짧은 프로세스에 CPU를 할당한다.

 

HRN(Highest Response Next) : 대기 시간을 고려하여 실행 시간이 짧은 프로세스와 대기 시간이 긴 프로세스에게 우선 순위를 주는 방식

우선순위 = (대기 시간 + 서비스 받을 시간) / 서비스 받을 시간

 

교착상태 4대 발생 조건

 - 상호배제(Mutual Exclusion) : 여러 프로세스를 동시에 처리하기 위해 공유자원을 순차적으로 할당하면서 동시에 접근하지 못하므로, 한 번에 하나의 프로세스만이 자원을 사용할 수 있다.

 - 점유와 대기(Hold & Wait) : 다중 프로그래밍 시스템에서는 시스템 성능을 향상시키기 위해 여러 프로세스를 동시에 운영하면서 공유자원을 순차적으로 할당해야 하므로, 어느 하나의 프로세스가 자원을 점유하면서 다른 프로세스에게 할당된 자원을 차지하기 위해 대기해야 한다.

 - 비선점(Non Preemption) : 프로세스가 사용 중인 공유자원을 강제로 빼앗을 수 없다는 의미로, 어느 하나의 프로세스에게 할당된 공유자원의 사용이 끝날 때까지 다른 하나의 프로세스가 강제로 중단될 수 없다.

 - 환형대기(Circular Wait) : 프로세스들에게 우선순위를 부여하여 공유자원 할당의 사용 시기와 순서를 융통성 있게 조절한다면, 공유자원의 점유와 대기는 환형대기 상태가 될 수 있다.

 

배치(Placement) 전략

 - 최초 적합 : 주기억장치의 가용공간들 중에서 프로그램과 데이터를 가능한 한 첫 번째 가용관에 배치

 - 최적 적합 : 기억장치의 가용공간들 중 프로그램과 데이터를 가능한 한 가장 알맞은 가용공간에 배치

 - 최악 적합 : 주기억장치의 가용공간들 중 프로그램이나 데이터를 가능한 한 가장 큰 가용공간에 배치

 

쉘의 종류

 - Bourne 쉘(/bin/sh) : AT&T의 유닉스 환경을 위해 개발되었으며, 대부분의 유닉스에서 제공하는 기본 쉘로 빠른 수행과 최소한의 자원만을 요구하는 것이 특징이다.

 - C 쉘(/bin/csh) : 사용법이 C언어와 유사하며, Korn쉘, Bourne쉘과 기본적으로 유사한 특성을 가지지만 대형 시스템을 목표로 설계되어 멍령어의 용어와 문법 구조가 다르다.

 - Korn 쉘(/bin/ksh) : 벨 연구소의 David Korn에 의해 제작되었고 Bourne 쉘을 포함하며, aliasing, history, command line editing과 같은 특성이 추가됨

 - Tee-see 쉘(/bin/tcsh) : 카네기 멜론 대학교에서 개발되었으며, C 쉘에서 명령 행 완성과 명령 행 편집 기능을 추가한 것

 - Z 쉘(/bin/zsh) : Paul Falstad에 의하여 개발되었고, 확장형 Bourne 쉘 이라 할 수 있다.

 - Bourne-againg 쉘(/bin/bash) : 일반적으로 많이 사용되는 쉘로 GNU 프로젝트를 위해 Brain Fox가 작성한 쉘이다. C 쉘, Broune 쉘의 기능이 많이 포함되어 있다.

 

3. 오답 노트

 

운영체제의 기능으로 가장 거리가 먼 것은 ?

1. 사용자 인터페이스 제공

2. 자원 스케줄링

3. 데이터의 공유

4. 원시 프로그램을 목적 프로그램으로 변환

원시 프로그램을 목적 프로그램으로 변환하는 역할을 수행하는 것은 Complier이다.

 

프로세스 상태의 종류가 아닌 것은 ?

1. Ready

2. Running

3. Request

4. Exit

프로세스의 상태 종류로는 New, Ready, Running, Block, Exit이다.

 

모듈의 응집도에 대한 설명으로 틀린 것은 ?

1. 모듈의 응집도란 모듈안의 요소들이 서로 관련되어 있는 정도를 말한다.

2. 기능적 응집도는 한 모듈 내부의 한 기능 요소에 의한 출력 자료가 다음 기능 원소의 입력 자료로서 제공되는 형태이다.

3. 교환적 응집도는 동일한 입력과 출력을 사용하는 소작업들이 모인 모듈로 볼 수 있다.

4. 논리적 응집도는 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우이다.

기능적 응집도 : 모듈 내의 모든 요소가 한 가지 기능을 수행하기 위해 구성될 때, 이들 요소는 기능적 응집도로 결속되어 있다고 한다.

 

모듈의 응집도가 약한 것부터 강한 순서로 옳게 나열된 것은 ?

1. 기능적 응집 -> 시간적 응집 -> 논리적 응집

2. 시간적 응집 -> 기능적 응집 -> 논리적 응집

3. 논리적 응집 -> 시간적 응집 -> 기능적 응집

4. 논리적 응집 -> 기능적 응집 -> 시간적 응집

1. 우연적 응집도
2. 논리적 응집도
3. 시간적 응집도
4. 절차적 응집도
5. 통신적 응집도
6. 순차적 응집도
7. 기능적 응집도

 

다음 중 가장 결합도가 강한 것은 ?

1. Data Coupling

2. Stamp Coupling

3. Common Coupling

4. Control Coupling

1. 내용 결합도
2. 공통 결합도
3. 외부 결합도
4. 제어 결합도
5. 스탬프 결합도
6. 자료 결합도

 

응집도의 종류 중 서로 간에 어떠한 의미 있는 연관 관계도 지니지 않는 기능 요소로 구성되는 경우이며, 서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행하는 경우의 응집도는 ?

1. Functional Cohesion

2. Sequential Cohesion

3. Logical Cohesion

4. Coincidental Cohesion

모듈 내부의 각 요소들이 서로 관계없는 것들이 모인 경우는 우연적 응집도이다.

 

프로세스에 대한 설명으로 옳은 것을 모두 고른 것은 ?

 

ㄱ. 실행 가능한 PCB를 가진 프로그램

ㄴ. 프로세서가 할당하는 개체로서 디스패치가 가능한 단위

ㄷ. 목적 또는 결과에 따라 발생되는 서건들의 과정

ㄹ. 동기적 행위를 일으키는 주체

 

1. ㄱ, ㄴ, ㄷ

2. ㄱ, ㄴ, ㄹ

3. ㄱ, ㄷ, ㄹ

4. ㄴ, ㄷ, ㄹ

프로세스는 비동기적 행위를 일으키는 주체이다.

 

비선점 스케줄링에 해당하지 않는 것은 ?

1. SRT(Shortest Remaining Time)

2. FIFO(First In First Out)

3. 기한부(Deadline)

4. HRN(Highest Response-ration Next)

SRT는 선점 스케줄링에 해당한다.

 

개인 공부를 위한 게시물로 틀린 내용을 포함할 수 있는 점 참고 부탁드립니다.
728x90

댓글