포스트

모의고사 14회

Q. 다음은 다차원 데이터베이스 관련 내용이다. () 안에 들어갈 알맞은 용어를 쓰시오.

MOLAP(Multi-dimension On-Line Analytical Processing), HOLAP(Hybrid On-Line Analytical Processing)

다차원 데이터베이스를 중심으로 다차원적인 분석을 하도록 만들어진 OLAP 구현방식의 ( ① )에서는 데이터베이스가 물리적으로 여러 개의 차원을 갖고, 이 공간에 데이터를 저장하여 사용자가 각각의 차원 축들에 대한 값을 지정하여 필요한 데이터를 검색할 수 있도록 한다. ( ① )에서는 비어있는 셀들이 많이 생기게 되므로 대용량의 시스템에 적합하지 않은 반면에 셀 단위의 데이터 비교가 가능하다는 장점이 있다. 또한 ( ② )은/는 ROLAP의 대용량 데이터 저장능력과 OLAP의 뛰어난 처리능력과 결합하기 위해 개발되었다. ( ② )은/는 대체로 데이터를 관계형 데이터베이스와 다차원 데이터베이스 둘 모두에 저장하고, 요구되는 처리 형태에 가장 잘 맞는 것을 사용한다.

  • 다차원 데이터베이스 관련 용어는 다음과 같다.
    • MOLAP(Multi-dimensional On-Line Analytical Processing)
      • 다차원 데이터베이스 중심으로 다차원적인 분석을 하도록 만들어진 OLAP 구현 방식의 시스템으로 데이터베이스가 물리적으로 여러 개의 차원을 갖고, 이 공간에 데이터를 저장하여 사용자가 각각의 차원 축들에 대한 값을 지정하여 필요한 데이터를 검색할 수 있는 특징이 있음
      • 대용량의 시스템에 적합하지 않은 반면에 셀 단위의 데이터 비교가 가능하다는 장점이 있음
    • HOLAP(Hybrid On-Line Analytical Processing)
      • 데이터를 관계형 데이터베이스와 다차원 데이터베이스 둘 모두에 저장하고, 요구되는 처리 형태에 가장 잘 맞는 것을 사용하는 방식의 시스템으로 ROLAP의 대용량 데이터 저장능력과 OLAP의 뛰어난 처리능력과 결합하기 위해 개발됨
    • OLAP(On-Line Analytical Processing)
      • 기업의 고객 데이터 및 판매 데이터를 축적한 데이터베이스를 다차원적으로 분석하고 시각화하는 시스템
    • ROLAP(Relational On-Line Analytical Processing)
      • 기업의 축적된 데이터베이스를 다차원적으로 분석하는 OLAP 시스템 형태의 하나로 서버 측의 관계형 데이터베이스에 저장된 데이터를 직접 검색/집계하고, 그 결과를 클라이언트에서 다차원 데이터로 구성하고 시각화하는 시스템

Q. ()은/는 독일 지멘스사의 원격 감시 제어 시스템의 소프트웨어에 침투하여 시스템을 마비하게 하는 악성코드이다. 원자력 발전소와 송/배전망, 화학공장, 송유/가스관과 같은 산업기반 시설에 사용되는 제어시스템에 침투하여 오작동을 유도하는 명령 코드를 입력해서 시스템을 마비시킨다. () 안에 들어갈 보안 관련 용어를 쓰시오.

스턱스넷(Stuxnet)

스턱스넷(Stuxnet)은 독일 지멘스사의 원격 감시 제어 시스템의 소프트웨어에 침투하여 시스템을 마비하게 하는 악성코드이다.

스턱스텟은 원자력 발전소와 송/배전망, 화학공장, 송유/가스관가 같은 산업기반 시설에 사용되는 제어시스템에 침투하여 오작동을 유도하는 명령코드를 입력해서 시스템을 마비시킨다.


Q. 네트워크 장치인 컨트롤 플레인(Control Plane)과 데이터 플레인(Data Plane)간의 연계 및 제어를 담당하는 개방형 표준 인터페이스를 무엇이라 하는가?

오픈플로우(Openflow)

  • 네트워크 장치의 컨트롤 플레인(Control Plane)과 데이터 플레인(Data Plane) 간의 연계 및 제어를 담당하는 개방형 표준 인터페이스는 오픈플로우이다.

  • Openflow
    • 네트워크를 보다 프로그래밍 가능하고 유연하게 적응 가능하게 만드는 것을 목표로 하는 네트워크 아키텍처인 소프트웨어 정의 네트워크와 관련 있다.
    • 네트워크 컨트롤러가 스위치망을 통해 네트워크 패킷의 경로를 정의하는 소프트웨어 정의 네트워크(SDN) 프로토콜로 통신 제어와 데이터 전송 간의 표준화된 통신을 제공함으로써 SDN에서의 혁신을 이끌고 있다.
    • 컨트롤 플레인(Control Plane; 트래픽을 전송할 위치를 결정하는 인텔리전스)을 데이터 플레인(Data Plane; 트래픽을 전달하는 물리적 장치)과 분리하여 SDN 구현을 가능하게 하는 통신 프로토콜이다.
    • SDN을 구현하기 위해 처음으로 제정된 표준 인터페이스이며 다음 그림과 같이 스위치, OpenFlow 컨트롤러로 구성되며, 흐름(Flow) 정보를 제어하여 패킷의 전달 경로 및 방식을 결정한다.

    이미지

  • SDN에서 OpenFlow의 위치

    이미지

  • 오픈플로우 제어기(컨트롤러)와 스위치의 시스템 구성도

    이미지

    • 스위치에 명령, 스위치는 명령에 따른 패킷 전송, 수정, 폐기 처리
    • L2 스위치에 OpenFlow 프로토콜 펌웨어 추가, 컨트롤러는 소프트웨어로 구현
    • 최단경로(SPF)나 회선 속도 외 사용자 지정 경로 가중치/부하 분산 조건
  • Software Defined Network
    • 개방형 API(오픈플로우)를 통해 네트워크의 트래픽 전달 동작을 소프트웨어 기반 컨트롤러에서 제어/관리하는 기술
  • 개방형 인터페이스란 통신 서비스 로직과 통신망 사이의 규격화된 공개 인터페이스를 말하는데, 하부 전달망 특성과 형태에 관계없이 다양한 통합 서비스의 제공을 가능하게 하는 핵심 기술이다.

Q. 다음은 고가용성 유형에 대한 설명이다. () 안에 들어갈 용어를 쓰시오.

Hot Standby(상시 대기 방식), Mutual Take-Over(상호 인수), Concurrent Access(동시적 접근)

( ① )은/는 가동시스템과 백업시스템으로 구성되어, 평상시에는 대기 상태를 유지하다가 장애 시 전환하는 방식이고, ( ② )은/는 2개 시스템이 각각의 고유한 가동 업무 서비스를 수행하다가 한 서버 장애 발생 시 상대 시스템의 자원을 페일 오버하여 동시에 2개의 업무를 수행하는 방식이다. 또한, ( ③ )은/는 여러 개의 시스템이 동시에 업무를 나누어 병렬처리하는 방식으로 HA에 참여하는 시스템 전체가 액티브(Active)한 상태로 업무를 수행하여 시스템 장애 시에도 다른 시스템으로 페일 오버(Fail Over)하지 않고 가용성을 보장하는 방식이다.

  • 고가용성의 유형은 다음과 같다.

    유형설명
    Hot Standby(상시 대기 방식)가동시스템과 백업시스템으로 구성되어서, 평상시에는 대기 상태를 유지하다가 장애 시 전환하는 방식, 장애 발생을 감지하여 Active 장비가 죽게되면, Standby 장비가 Failover가 일어나 Active로 변경된다. 단, Failover 되는 시간은 서비스가 불가능하다.
    Mutual Take-Over(상호 인수)2개의 시스템이 각각의 고유한 가동 업무 서비스 수행하다가 한 서버 장애 발생 시 상대 시스템의 자원을 페일 오버하여 동시에 2개의 업무를 수행하는 방식
    Concurrent Access(동시적 접근)여러 개의 시스템이 동시에 업무를 나누어 병렬처리하는 방식으로 HA에 참여하는 시스템 전체가 액티브(Active)한 상태로 업무를 수행하여 시스템 장애 시에도 다른 시스템으로 페일 오버(Fail Over)하지 않고 가용성을 보장하는 방식
  • 장애 극복 기능(failover, 페일오버)이란 컴퓨터 서버, 시스템, 네트워크 등에서 이상이 생겼을 때 예비 시스템으로 자동전환되는 기능이다. 시스템 대체 작동 또는 장애 조치라고도 한다.
  • 고가용성(HA, High Availability)이란 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다. 고(高)가용성이란 “가용성이 높다”는 뜻으로서, “절대 고장 나지 않음”을 의미한다.
  • 고 가용성을 구현하기 위한 방법으로는 클러스터링, 이중화, RAID 구성 등이 일반적으로 사용된다.
    • 클러스터링은 여러 대의 서버가 하나의 시스템처럼 동작하여 네트워크 장애에 대비하는 방식이다.
    • 이중화는 하나의 시스템이 고장나면 다른 시스템으로 자동 전환되는 구조를 가지는 방식이다. Active와 Standby 시스템이 있고, Active 시스템에서 발생한 문제가 감지되면 Standby 시스템으로 전환되어 서비스가 중단되지 않도록 한다.
    • RAID 구성은 여러 개의 하드 디스크를 하나의 논리적인 단위로 묶어서 데이터를 저장하는 방식으로, 데이터의 안정성과 가용성을 높이기 위해 사용된다. RAID 1은 미러링을 통해 하나의 디스크에 기록된 데이터를 다른 디스크에 동일하게 복제하여 저장한다.

Q. 다음은 [학생] 테이블이다. 2학년부터 4학년 학생의 학번, 이름을 검색하는 SQL 문을 BETWEEN 키워드를 사용하여 작성하시오.

1
2
3
SELECT 학번, 이름 
FROM 학생
WHERE 학년 BETWEEN 2 AND 4;

[학생]

학번이름학년
200101윤봉길1
200102안중근3
200103이순신2
200104홍범도3
200105김좌진4
200106유관순3
200107이봉창2
200108이광수3
  • WHERE절 조건에서는 비교, 범위, 집합, 패턴, NULL, 복합조건이 있고, 범위를 찾기 위해서는 BETWEEN을 사용한다.
  • BETWEEN 문법은 다음과 같다.

    1
    
      컬럼 BETWEEN 1 AND 2
    
    • 값1보다 크거나 같고, 값2보다 작거나 같은 데이터 조회
  • 다음은 BETWEEN 구문과 동일한 결과를 나타낸다.

    1
    
      컬럼 >= 1 AND 컬럼 <= 2
    

Q. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.

52

1
2
3
4
5
6
7
8
9
10
i=0
j=0
sum=0
mul=0
for i in range(2, 4):
	for j in range(0, 4):
		mul=i*i
		sum+=mul

print(sum)
  • 바깥 for 문에서는 i가 2부터 3까지 증가하며 반복한다. range에서 2는 시작 값, 4는 끝값+1이다.
  • 안쪽 for 문에서는 j가 0부터 3까지 증가한다. range에서 0은 시작 값, 4는 끝값+1이다.
  • mul=i*i에서 i와 i값을 곱한 값을 mul에 대입한다.
  • sum에는 mul 값을 누적해서 더한다.
  • for 문이 종료되고 sum을 화면에 출력한다.
  • 아래 표와 같이 i, j, mul, sum 값이 변화한다.

    ijmulsum
    2044
    2148
    22412
    23416
    30925
    31934
    32943
    33952

Q. 다음 중 TCL 명령어 3가지를 작성하시오.

커밋(Commit), 롤백(Rollback), 체크포인트(Checkpoint)

  • TCL(Transaction Control Language)은 트랜잭션 제어언어이며 명령어는 다음과 같다.
명령어설명
커밋(COMMIT)트랜잭션을 메모리에 영구적으로 저장하는 명령어
롤백(ROLLBACK)트랜잭션 내역을 저장 무효화시키는 명령어
체크포인트(CHECKPOINT)ROLLBACK을 위한 시점을 지정하는 명령어

Q. 배드 코드 사례 중 스파게티 코드(Spaghetti Code)는 무엇인지 설명하시오.

스파게티 코드는 소스 코드가 복잡하게 얽힌 모습을 스파게티 면발에 비유하여 작동은 정상적으로 하지만, 사람이 코드를 읽으면서 그 코드의 작동을 파악하기는 어려운 코드이다.

  • 배드 코드의 사례는 다음과 같다.
    • 외계인 코드(Alien Code)
      • 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 코드
    • 스파게티 코드(Spaghetti Code)
      • 스파게티 코드는 컴퓨터 프로그램의 소스 코드가 복잡하게 얽힌 모습을 스파게티의 면발에 비유한 표현
      • 작동은 정상적으로 하지만, 사람이 코드를 읽으면서 그 코드의 작동을 파악하기는 어려운 코드
    • 알 수 없는 변수명
      • 변수나 메서드에 대한 이름 정의를 알 수 없는 코드
    • 로직 중복
      • 동일한 처리 로직이 중복되게 작성된 코드

Q. 다음은 [학생] 테이블이다. [학생] 테이블에서 이름이 ‘이광수’인 튜플의 상태를 ‘매국노’로 변경하는 쿼리를 작성하시오.

1
UPDATE 학생 SET 상태 = '매국노' WHERE 이름 = '이광수'; 
  • UPDATE는 데이터의 내용을 변경할 때 사용하는 명령어이다.
  • UPDATE 명령어 문법은 다음과 같다.

    1
    
      UPDATE 테이블명 SET 속성명 = 데이터, ... WHERE 조건;
    
    • UPDATE 명령문은 WHERE절을 통해 어떤 조건이 만족할 경우에만 특정 컬럼의 값을 수정하는 용도로 자주 사용됨

Q. 다음은 자바 코드이다. 출력 결과를 쓰시오.

수제비

1
2
3
4
5
6
7
8
9
10
public class Soojebi {
	public static void main(String[] args) {
		String[] s = {"정보처리", "빅데이터", "수제비"};
		int count=0;
		for(String var : s){
			count++;
		}
		System.out.print(s[count-1]);
	}
}
  • 문자열 배열 s에는 “정보처리”, ”빅데이터”, “수제비”로 초기화한다.
  • 정수형 변수 count는 선언과 동시에 0으로 초기화한다.
  • for 반복문에서는 배열 s의 개수만큼 반복을 하며 count 값을 1씩 증가시킨다.
  • s[count-1] 값을 System.out.print 메서드를 이용하여 화면에 출력한다.

Q. EAI의 구축방식 중 가장 기초적인 애플리케이션 통합방법으로 1:1 단순 통합방법을 의미하는 ( ① ) 방식과 애플리케이션 사이 미들웨어(버스)를 두어 연계하는 미들웨어 통합 방식인 ( ② ) 방식이 있다. () 안에 들어갈 개념은 무엇인지 쓰시오.

포인트 투 포인트(Point-to-Point), 메시지 버스(Message Bus)

  • EAI의 구축 유형은 다음과 같다.
    • 포인트 투 포인트(Point-to-Point)
      • 가장 기초적인 애플리케이션 통합방법으로 1:1 단순 통합 방법
    • 허브 앤 스포크(Hub & Spoke)
      • 단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식
      • 허브 장애 시 전체 장애 발생
    • 메시지 버스(Message Bus)
      • 애플리케이션 사이 미들웨어(버스)를 두어 연계하는 미들웨어 통합 방식
      • 뛰어난 확장성과 대용량의 데이터 처리 가능
    • 하이브리드(Hybrid)
      • 그룹 내부는 허브 앤 스포크 방식을 사용하고, 그룹 간에는 메시지 버스 방식을 사용하는 통합 방식

Q. 잠재적 사용자의 다양한 목적과 관찰된 행동 패턴을 응집시켜 놓은 가상의 사용자를 의미하는 용어는 무엇인가?

페르소나(Persona)

  • 사용자 요구사항을 도출하기 위한 세부 수행 활동 중 하나로 페르소나를 정의하는 단계가 존재한다.
  • 사용자 요구사항 도출 세부 활동은 다음과 같다.

    세부 활동설명
    페르소나 정의잠재적 사용자의 다양한 목적과 관찰된 행동 패턴을 응집시켜 놓은 가상의 사용자를 정의
    콘셉트 모델 정의여러 가지 추상적인 콘셉트들 사이의 관계를 보여주는 다이어그램을 정의
    사용자 요구사항 정의리서치 및 페르소나 결과물을 토대로 요구사항을 도출하고, 우선순위를 정함
    UI 컨셉션정리된 요구사항을 구체화하는 단계로 화면 디자인 단계 전에 대표 화면 설계를 진행하는 단계

Q. 다음은 자바 코드이다. 출력 결과를 쓰시오.

ParentChild

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Parent {
	String className = "Parent";
	public void info() {
		System.out.print(className);
	}
}
class Child extends Parent {
	String className = "Child"
	public void info() {
		super.info();
		System.out.print(className);
	}
}
public class Soojebi {
	public static void main(String[] args) {
		Parent p = new Child();
		p.info();
	}
}
  • Parent 클래스와 Child 클래스는 상속 관계에 있다.
  • Parent 클래스는 className 멤버 변수는 “Parent”를 대입하고 info 멤버 메서드에서 className을 화면에 출력한다.
  • Child 클래스는 className 멤버 변수는 “Child”를 대입하고 info 멤버 메서드에서 super()를 호출하고 className을 화면에 출력한다.
  • main 메서드에서 객체를 생성하고 p.info를 호출하면 super.info에서 “Parent”를 출력하고 System.out.print(className);에서 Child를 호출하게 된다.

Q. 다음은 테스트 유형에 대한 설명이다. () 안에 들어갈 유형을 쓰시오.

기본 경로 커버리지 테스트[=경로 커버리지 테스트(Base Path Coverage)], 비교 테스트(Comparison Testing)

  • ( ① )은/는 화이트 박스 테스트 유형 중 하나로 수행 가능한 모든 경로를 테스트하는 기법이다.
  • ( ② )은/는 블랙박스 테스트 유형 중 하나로 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 데이터가 나오는지 비교해 보는 테스트 기법이다.
  • 기본 경로 커버리지 테스트와 비교 테스트의 개념은 다음과 같다.

    구분설명
    기본 경로 커버리지 테스트화이트 박스 테스트 유형 중 하나로 수행 가능한 모든 경로를 테스트하는 기법
    비교 테스트블랙박스 테스트 유형 중 하나로 여러 버전의 프로그램에 같은 입력값을 넣어서 동일한 결과 데이터가 나오는지 비교해 보는 테스트 기법

Q. 다음은 [점수] 테이블이다. 학년별 점수의 평균, 반별 점수의 평균과 전체 평균을 구하기 위한 쿼리를 작성하시오.

1
2
3
SELECT 학년, , AVG(점수) AS 점수
FROM 점수
GROUP BY CUBE(학년, );

[점수]

학년이름점수
11태종90
11정종70
12태조80
12세종100
21문종70
22단종80
22세조60

[결과]

학년점수
 176.666667
 280
1180
1290
1 85
2170
2270
2 70
  78.571428
  • CUBE는 결합 가능한 모든 값에 대해 다차원 집계를 생성하는 그룹 함수이다.
  • 연산이 많아 시스템에 부담을 준다.
  • CUBE 함수 문법은 다음과 같다.

    1
    2
    3
    4
    5
    6
    
      SELECT 컬럼1, 컬럼2, ..., 집계 함수
      FROM 테이블명
      [WHERE ...]
      GROUP BY [컬럼 ...] CUBE(컬럼명a, ...)
      [HAVING ...]
      [ORDER BY ...]
    
    • ROLLUP은 소계, 중간 집계를 나타내 주지만, CUBE는 결합 가능한 모든 값에 대해 다차원 집계 생성
    • CUBE는 세분화된 소계가 구해짐

Q. 대칭 키 암호 방식은 암호화 알고리즘의 한 종류로, 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘이다. 대칭 키 암호 알고리즘의 종류 중에서 ( ① )은/는 1999년 국내 한국인터넷진흥원(KISA)이 개발한 블록 암호화 알고리즘으로, 128 비트 비밀키로부터 생성된 16개의 64비트 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128비트의 평문 블록을 128비트 암호문 블록으로 암호화하여 출력하는 방식이고, ( ② )은/는 2001년 미국 표준 기술 연구소(NIST)에서 발표한 블록 암호화 알고리즘으로, 블록 크기는 128비트이며, 키 길이에 따라 128비트, 192비트, 256비트로 분류되고, 라운드 수는 10, 12 14라운드로 분류되며, 한 라운드는 SubBytes, ShiftRows, MixColumns, AddRoundKey의 4가지 계층으로 구성된다. () 안에 들어갈 대칭 키 알고리즘을 쓰시오.

SEED, AES(Advanced Encryption Standard)

  • 대칭 키 알고리즘인 SEED, AES에 대한 설명은 다음과 같다.

    알고리즘설명
    SEED1999년 국내 한국인터넷진흥원(KISA)이 개발한 블록 암호화 알고리즘으로, 128 비밀키로부터 생성된 16개의 64bit 라운드 키를 사용하여 총 16회의 라운드를 거쳐 128bit의 평문 블록을 128bit 암호문 블록으로 암호화하여 출력하는 방식
    AES2001년 미국 표준 기술 연구소(NIST)에서 발표한 블록 암호화 알고리즘으로, 블록 크기는 128bit이며, 키 길이에 따라 128bit, 192bit, 256bit로 분류되고, 라운드 수는 10, 12, 14라운드로 분류되며, 한 라운드는 SubBytes, ShiftRows, MixColumns, AddRoundKey의 4가지 계층으로 구성

Q. 객체지향 모델링 시 클래스의 속성 및 연산과 클래스의 정적인 관계를 표현한 다이어그램인 클래스 다이어그램(Class Diagram)의 구성요소 중 ( ① )은/는 클래스의 구조적 특성에 이름을 붙인 것으로 특성에 해당하는 인스턴스가 보유할 수 있는 값의 범위를 기술한 것이고, ( ② )은/는 이름, 타입, 매개변수들과 연관된 행위를 호출하는 데 요구되는 제약사항들을 명시하는 클래스의 행위적 특징이다. () 안에 들어갈 구성요소를 쓰시오.

속성(Attribute), 연산(Operation) 또는 메서드(Method)

  • 클래스 다이어그램 구성요소는 다음과 같다.
    • 클래스(Class)
      • 공통의 속성, 연산(메서드), 관계, 의미를 공유하는 객체들의 집합
    • 속성(Attribute)
      • 클래스의 구조적 특성에 이름을 붙인 것으로 특성에 해당하는 인스턴스가 보유할 수 있는 값의 범위를 기술
    • 연산(Operation), 메서드(Method)
      • 이름, 타입, 매개변수들과 연관된 행위를 호출하는 데 요구되는 제약사항들을 명시하는 클래스의 행위적 특징
      • 객체에 요청하여 행동에 영향을 줄 수 있는 서비스
    • 접근 제어자(Access Modifier)
      • 클래스에 접근할 수 있는 정도를 표현
        • -: 클래스 내부 접근만 허용(private)
        • +: 클래스 외부 접근을 허용(public)
        • #: 동일 패키지/파생 클래스에서 접근 가능(protected)
        • ~: 동일 패키지 클래스에서 접근 가능(default)

Q. ( ① )은/는 ( ② )보다 가벼운, 독립적으로 수행되는 순차적인 제어의 흐름이며, 실행 단위이고, ( ② )은/는 CPU에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행 중인 프로그램을 의미하며, 작업(Job) 또는 태스크(Task)라고도 한다. () 안에 들어갈 용어를 쓰시오.

스레드(Thread), 프로세스(Process)

  • 프로세스와 스레드 개념은 다음과 같다.

    용어설명
    프로세스CPU에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행 중인 프로그램
    스레드프로세스보다 가벼운, 독립적으로 수행되는 순차적인 제어의 흐름이며, 실행 단위임
  • 한 개의 프로세스는 여러 개의 스레드를 가질 수 있다.

    이미지

    • pthread_create는 새로운 쓰레드를 생성한다.
    • fork는프로세스를 copy하여 자식 프로세스를 생성하는 시스템콜이다.
      • 같은 프로그램에서 새로운 제어 흐름을 만드는 용도. 대개 새로운 제어 흐름은 스레드를 통해 만든다. 스레드를 만드는 것보다 프로세스를 만드는 것이 안정성 측면에서 더 나을 수 있기 때문에 절대적으로 우월한 것은 아니다.
      • 다른 프로그램을 실행하는 새 프로세스를 만드는 용도. 예를 들면 쉘에서 명령어를 통해 프로세스를 실행하면 쉘은 fork()를 통해 자식 프로세스를 만들고, exec()를 통해 주어진 명령에 해당하는 프로그램을 실행한다.
      • 자식 프로세스가 생성되면서 부모 프로세스의 Stack, Heap, Data 뿐만 아니라 부모 프로세스의 PCB(Process Control Block)도 그대로 복사한다. 텍스트(text, 프로그램 코드)영역은 공유한다.

      이미지


참고 자료


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.