정보처리기사_4과목_프로그래밍 언어 활용(0)

2021. 4. 21. 16:11공부/정보처리기사

728x90
반응형
공통모듈구현
모듈화 = 소프트웨어를 기능단위로 분해한 것으로, 모듈화된 시스템은 시스템을 모듈들의 집합으로 추상화 한것이다.

 

모듈의 특성
- 모듈은 명령문, 처리 논리, 데이터 구조 포함한다.
- 각모듈은 독립접 컴파일(번역) 가능하다
모듈이 유용한 이유
- 시스템을 기능 단위로 분해 가능하게 해준다.
- 자쵸 추상화를 구현 시켜 준다
모듈의 기준
- 모듈간의 결합도는 최소화 응집도는 최대화
- 가시성과 시험 용이성을 향상시킬 수 있어야함

결합도
- 결합도는 모듈들이 서로 관련되거나 연결된 정도를 나타낸다
- 두 모듈간의 상호 의존도
- 낮은 결합도를 유지해야 한다.

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

공통 결합도 : 공통 결합도는 하나의 기억장소에 공종의 자료 영역을 설정 한 후, 한 모듈이 그기억 장소에 자료를 전송하면 다른 모듈은 기억장소를 조회함으로써 정보를 전달 받는 방식을 취할 때 발생된다. == 전역변수(공통데이터)

외부 결합도 : 일련의 모듈들이 동일한 광역 데이터 아이템(단일 필드 변수)을 사용하면 외부 결합도가 된다. == 외부 변수

제어 결합도 : 어떤 뮤둘이 다른 모듈을 호출 할 경우, 제어정보를 파라미터로 넘겨주는 경우 이들 두 모듈은 제어 결합도를 가졌다고 한다. == 제어신호(flag-o/i, switch-on/off)

스탬프 결합도 : 한 그룹의 모듈들이 동일한 비광역 데이터 구조를 사용한다면 스탬프 결한도가 될수 있다. == 배열,레코드(구조체)

자료(데이터) 결합도 : 모듈간의 결합도 중 가장 바람직한 결합도는 자료 결합도이다.

응집도
- 한 모듈 내에 있는 처리 요소들 사이의 기능적인 연관정도를 나타내며, 응집도가 높아야 좋은 모듈이 된다.
- 한 모듈 내에 필요한 함수와 데이터들의 친화력을 측정하는데 사용

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

논리적 응집도 : 논리적으로 서로 관련이 있는 요소를 모아 하나의 모듈로 한경우 그 모듈의 기능은 이 모듈을 참조할 때 어떤 파리미터를 주느냐에 따라 다르게 된다.(우연적 응집도와 비슷하다)

시간적 응집도 : 어느 특정한 시간에 처리되는 몇 개의 기능을 모아 한 모듈로 한 경우 , 이들 기능은 시간적인 관계로 결속되는 경우가 된다. 예를 들어, 프로그램의 초기화 모듈이나 프로그램 종료 모듈이 이에 해당된다.

절차적 응집도 : 어떤 모듈이 다음 조건을 충족 시킬때 절차적 응집도를 가진다고 한다.(시간적 응집도와 비슷하다.)

통신적 응집도 : 단말기로부터 데이터를 읽고 검사하여 데이터베이스에 입력하는 모듈은 그 안의 기능들이 그 레코드의 사용과 연관되므로 통신적 응집도를 갖는다.

순차적 응집도 : 순차적 응집도는 실행되는 순서가 서로 밀접한 관계를 갖는 기능을 모아 한 모듈로 구성한 것으로 흔히 어떤 프로그램을 작성 할때 순서도를 작성하는데 이경우에는 순차적 응집도를 갖는 모듈이 되기 쉽다.(통신적 응집도와 비슷하다.)

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

 ※ 제어 흐름(비공통 데이터)로 처리하며 순서와 상관없으면 시간적응집도, 순서와 상관있으면 절차적 응집도로 보면되고
     자료처리(공통데이터)로 처리하며 순서와 상관없으면 통신적 응집도, 상관있으면 순차적 응집도라고 외우면된다.!
      통신적 응집도는 정보적 또는 교환적 으로도 시험에 표기 될수 있다!

운영체제 기초 활용

운영체제

1. 정의 = 컴퓨터의 제한된 각종 자원을 효율적으로 관리, 운영함으로써 사용자에게 편리성을 제공하고자 하는 인간과 컴퓨터 사이의 인터페이스를 위한 시스템 소프트웨어이다.

2. 역할
- 사용자와의 인터페이스를 정의
- 사용자들간의 데이타를 공유
- 입출력에 다한 용이성 제공

3. 구성
제어프로그램 (Control Program)
 - 컴퓨터 전체의 동작 상태를 감시, 제어 하는 기능을 수행하는 프로그램을 말한다.

감시 프로그램 : 제어 프로그램의 중추적 기능을 담당하는 프로그램으로서 퍼리 프로그램의 실행 과정과 시스템 전체의 동작을 감독 하고 지원하는 프로그램

데이터 관리 프로그램 : 컴퓨터에서 취급하는 각종 파일과 데이터를 표준적인 방법으로 처리할 수 있도록 관리하는 프로그램 그룹을 의미하고 주기억장치와 보조기억장치 사이의 데이터 전송, 파일의 조직 및 활용, 입출력 데이터와 프로그램 논리의 연결 등을 담당한다.

작업 관리 프로그램 : 어떤 업무를 처리하고 다른 업무를 자동적으로 이동하기 위한 준비 및 그완료 처리를 담당하는 기능을 수행한다.

통신제어 : 통신 회선을 경유하는 터미널과 중앙의 컴퓨터 사엥서 데이터를 주고받는 경우라든가 도는 컴퓨터에서의 데이터를 송수신 하는 경우에 사용되는 프로그램이다.
※ 제어 프로그램 구성 : 감시, 관리, 관리, 제어

처리프로그램 (Processing Program)
- 제어프로그램의 감시 하에 특정 문제를 해결하기 위한 데이터 처리를 담당하는 프로그램을 말한다.

언어번역, 서비스, 사용자 프로그램 등이 있음

프로세스 
- 2가지의 프로세스가 있다 컴퓨터 구조, 운영체제 에서 실행중인 프로그램을 말하는 프로세스 와 소프웨어 공학, 정보보호론에서 절차, 흐름, 순서를 표현하는 프로세스 가 있음

정의
- 프로그램은 수동적 개체(passive entity)이고 프로세스는 능동적 개체(active entity)로서 프로세스의 실행은 순차적으로 실행되어야 한다.                  정적                                           동적,능동                                           

상태도
**프로세스 상태 전이도


생성(New) 상태 : 작업이 제출 되어 스풀 공간에 수록
준비(Ready) 상태 : 중앙처리 장치가 사용 가능한 (할당할 수 있는 )상태
실행(Running) 상태 : 프로세스가 중앙처리장치를 차지(프로세스를 실행)하고 있는 상태
대기(Block) 상태 : I/O와 같은 사건으로 인해 중앙처리장치를 양도하고 I/O 완료 시까지 대기 큐에서 대기하고 있는 상태
완료(Exit) 상태 : 중앙처리장치를 할당 받아 주어진 시간내에 수행을 종료한 상태

스레드(Thread)
스레드의 특징
- 프로세서를 사용하는 기본 단위이며, 명령어를 독립적으로 실행 할수 있는 하나의 제어 흐름이다.

단일 스레드와 다중 스레드 모델
단일 스레드 프로세스 모델
 - 프로세스를 하나의 스레드, 스레드가 가진 레지스터와 스택으로 표현된다.

다중 스레드 프로세스 모델
프로세스를 각각의 스레드와 고유의 레디스터, 스택으로 표현 프로세스 주소 영역을 모든 스레드가 공유한다.
프로세스의 모든 스레드는 해당 프로세스의 자원과 상태를 공유, 같은 주소 공간에 존재하며 동일한 데이터 접근한다.
장점 : 응답성, 자원공유, 경제성 다중 처리기 구조의 활용

프로세스 스케줄링 
비선점형 기법
- 프로세스프로세서를 점유하면, 다른 프로세스는 현재 프로세스를 중단시킬 수 없는 기법이다.
- 프로세스가 프로세서를 할당 받으면, 프로세스가 완료 될때까지 프로세서를 하용한다.
- FCFS, SJF(Shortest Job First), HRN(Highest Response Next)


평균실행 시간 = (실행 시간 합) / 프로세스 갯수
평균대기 시간 = (대기 시간 합) / 프로세스 갯수
평균반환 시간 = 평균 실행시간 + 평균대기시간 
위 3가지 는 어느 기법이든 같다 시험에 실행시간,대기시간,반환시간 구하는 문제 나올수 있음
※ FCFS기법
- 가장대표적인 비선점형 스케줄링 기법
- 대기리스트에 가장 먼저 도착한 프로세스 순서대로 cpu를 할당하고 알고리즘이 간단하고 구현하기 쉽다.
프로세스 / 실행 시간 / 도착 시간
A          / 4            / 0           
B          / 3            / 2           
C          / 2            / 1           



평균 실행 시간 = ( 4 + 3 + 2) / 3 = 3
평균 대기 시간 = (0 + 4 + 3) / 3 = 2.33..
평균 반환 시간 = 3 + 2.33.. = 5.33..

※ SJF(Shortest Job First)
- FCFS를 개선한 기법으로 , 대기리스트의 프로세스들 중 작업이 끝나기 까지의 실행시간 추정치가 가장 작은 프로세스를 CPU에 할당한다.
- FCFS보다 평균 대기시간이 작지만, 실행시간이 긴 작업의 경우 FCFS보다 대기시간이 더 길어진다.

※ HRN(Hihest Rsponse Next)
- SJF의 단점인 실행시간이 긴 프로세스와 짧은 프로세스의 지나친 불평등을 보완한 기법이다.
- 대시시간을 고려하여 실행시간이 짧은 프로세스와 대기시간이 긴 프로세스에세 우선순위를 높여준다.
- 우선순위 계산식에서 가장 큰 값을 가진 프로세스를 스케줄링 한다.
       우선순위 = (대기시간 + 서비스 받을 시간) / 서비스 받을 시간 

선점형 기법
- 프로세스가 프로세서를 점유하면, 다른 프로세스는 현재 프로세스를 중단 시킬수 있는 기법이다.
- RR(Round Robin, 라운드 로빈), SRT(Shortest Remaining Time), MLQ(Multi-level Queue, 다단계 큐), MFQ(Multi-level Feedback Queue, 다단계 피드백 큐)

※ RR(Round Robin, 라운드 로빈)
- FCFS를 선점형 스케줄링으로 변형한 기법이다.
- 대화형 시스템에서 사용되며 , 빠른 응답시간을 보장한다.
- RR은 각 프로세스가 CPU를 공평하게 사용할 수 있다는 장점이 있지만 시간 할당량의 크기는 시스템의 성능을 경정하므로 세심한 주의가 필요하다.

RR 평균반환시간(시간할당량 : 3) -> 꼭체크
프로세스 / 실행 시간 / 도착 시간
A          / 4            / 0           
B          / 3            / 2           
C          / 2            / 1           



교착상태(Deadlock)
교착상태 개요
- 다중 프로그래밍 환경에서는 프로세스가 필요한 모든 자원을 점유해야 작업을 수행할 수 있으며, 모든 프로세스는 공유자원을 점유하기 위해 서로 경쟁 상태에 있다.

교착상태 4개 발생 조건
- 상호배제(Mutual Exclusion)
- 점유와 대기(Hold & Wait)
- 비선점(Non Preemption)                  --> 4대조건은? 하고 선점이라고 문제 나올수 있음
- 환형대기(순환대기, Circular Wait)

교착상태 발견(탐지, Detection)
컴퓨터 시스템에서 교착상태가 발생했는지 교착상태에 있는 프로세스와 자원을 발견한 것으로, 교착 상태 발견 알고리즘 과 자원할당 그래프를 사용한다.

교착상태 회복(복구, Recovery)
- 교착 상태가 발생한 프로세스를 제거하거나 프로세스에 할당된 자원을 선점하여 교착상태를 회복한다.

교착상태 예방(방지, Prevention)
- 사전에 교착상태가 발생되지 않도록 교착상태 필요 조건에서 상호배제를 제외하고, 어느 것 하나를 부정함으로 교착상태를 예방한다.

교착상태 회피(Avoidance)
- 시스템이 안전상태가 되도록 프로세스의 자원 요구만을 할당하는 기법으로 은해원 알고리즘이 대표적이다.

6. 주기억 장치 교체(대치, Replacement) 전략
FIFO(First in First Out)
- 주기억 장치에서 가정 먼저 입력되엇던 페이지 교체한다.
- 다른 페이지 교체 알고리즘에 비하여 페이지 교체가 가장 많다.

LRU(Least Recently Used)
- 주기억장치에서 가장 오랫동안 사용되지 않은 페이지를 교체한다.

OPT(최적화 교체, OPTimal replacement)
- 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체 한다.


유닉스(Unix)
1.유닉스 시스템
 개요
Assembly(저급언어, 기계어)로 개발하여 초기 유닉스 시스템 발전의 기초를 만들었으며 1973년 Dennis Ritchie가 이식성이 뛰어난 C언어로 유닉스 시스템을 재작성함으로써 본격적인 유닉스 시대의 장을 만들게 되었다.

유닉스 운영체제 의 종류
UNIX System V R4.0
SunOS
Solaris
HP-UX
AIX
Linux

유닉스의 특징
대화식 운영체제
멀티태스팅
멀티유저환경
계층적파일 시스템
이식성
유연성
호환성
보안및 보호 기능

유닉스 시스템 핵심 구조
- 유닉스 시스템은 크케 커널 쉘 파일시스템 3가지 핵심 구조로 구성된다.
구분                       / 내용
커널(Kernel)             /  _ 유닉스 운영체제의 핵심
                                _ 메인 메모리에 상주하여 컴퓨터 자원관리
                               _ 디바이스(I/O), 메모리, 프로세스 관리 및 시스템 프로그램과 하드웨어 사이의 함수 관리 및 Swap                                     space, Deamon관리 등을 담당

쉘(Shell)                  / _ 커널과 사용자 간의 인터페이스를 담당하며, 사용자 명령의 입풀력을 수행하며 프로그램을 실행
                               _ 명령어 해석기/번역기 라고도 불린다.

파일시스템(File System) / _ 디렉터리, 서브 디렉터리, 파일 등의 계층적인 트리구조를 의미하며, 시스템 관리를 위한 기본 환                                      경을 제공 한다. 슈퍼블록, inode list, 데이터의 3부분으로 구성된다.

커널(Kernel)
- 사용자 프로그램들은 경우에 따라 시스템의 하드웨어나 소프트웨어의 자원을 액세스 하게 되는데 커널은 이러한 사용자 프로그램을 관리하는 부분을 말한다.
- 커널은 크게 프로세스, 메모리, 입출력(I/O) 그리고 파일 관리의 네 부분으로 나누어 생각할 수 있으며 이러한 서브 시스템은 각기 독립적으로 사용자 프로그램에 의해서 이도되는 서비스를 올 바르게 제공하기 위해서 상호 협동적으로 작동하게 된다.
- 또한 커널은 쉘과 상호 연관 되어 있어서 쉘에서 지시한 작업을 수행하고 결과물을 돌려보낸다.

 

728x90