3주차. 프로세스의 개념
프로세스의 개념
-가장 일반적인 정의 ='실행중인 프로그램'
-프로세스는 프로그램이 메모리에 적재되어 실행 가능한 상태임을 전제하는 능동적인 개념
-힙, 스택
-프로세스 상태 : 생성 - 실행 - 대기 - 준비 - 종료
-프로세스 제어 블록(PCB)은 운영체제가 사용하는 메모리 공간에 존재함
프로세스의 관리
-프로세스는 실행 도중에 프로세스 생성 시스템 호출을 통하여 여러 개의 새로운 프로세스를 생성할 수 있음 (트리 구조를 형성함)
-시스템에 프로세스가 너무 많아서 비효율적이거나 다양한 원인으로 인하여 재시작하는 과정을 거칠 수 있음
-운영체제는 2가지 프로세서 접근모드를 제공 : 사용자모드, 커널모드
프로세스 관련 실습
-cmd 명령어 :
ps
ps -u
ps -aux
top
pstree
9주차. 프로세스간 통신
시그널(signal) : 프로세스에게 이벤트가 발생하였음을 알려주는 방식
파이프(pipe) & 피포(FIFO) : 프로세스간에 정보교환을 위하여 특수 파일의 형태로 지원
메시지 큐 :
-프로세스간에 가변길이의 메시지를 전달하기 위하여 커널 내부의 일정 크기의 버퍼(mail box)를 이용하는 방식
-메시지 큐로 데이터를 전송할 때마다 시스템 호출 (문맥전환 발생)
-데이터 복사도 2차례 발생 (속도가 느리고 시스템 부하가 많이 증가)
-단방향 통신 경로로서 방향별로 1개씩의 메시지 큐를 사용
공유 메모리 : 여러 프로세스가 함께 사용하는 공통의 메모리 공간
시그널이란? 다양하고 중요한 이벤트를 프로세스에게 전달하는 메커니즘. 프로세스는 시그널을 처리하기 위하여 별도의 시그널 핸들러를 보유할 수 있음
일반적인 시그널 처리 과정 -> 프로세스2는 프로세스1에게 signal-A를 발생시킴 -> 시그널은 운영체제에 의해서 PCB(Process Control Block)에 일시적으로 저장됨 -> PCB에 저장된 시그널은 잠시 후에 프로세스#1에게 전달됨 -> 프로세스 #1이 시그널을 처리할 핸들러를 가지고 있으면 핸들러가 수행됨
시그널 전송 방법 -> 키보드를 이용하는 방법, 명령어 라인에서 'kill'명령어로 시그널 보내는 방법, 시스템 호출을 통해서 시그널을 보내는 방법
파이프, 피포, 그리고 공유 메모리
-파이프 : 한 프로세스의 표준출력을 다른 프로세스의 표준입력으로 연결하는 방법. 작은 기능을 갖는 여러 개의 프로그램을 엮어서 하나의 큰 프로그램으로 구성할 수 있도록 함. 유닉스/리눅스 쉘에서 널리 활용되고 있음
-파이프는 부모프로세스와 자식 프로세스간만에서 사용 가능하며 프로세스가 종료되면 사라져서 영구적이지 못하기 때문에 FIFO가 제안됨. FIFO(이름을 가진 파이프)는 부모/자식 관계에 상관없이 FIFO파일에 데이터를 쓰거나 읽음으로써 프로세스간에 통신을 수행할 수 있음. 파일시스템 내에서 특수한 장치파일로서 존재함
-공유메모리 : 운영체제의 보호기능으로 인하여 프로세스 상호간에 메모리를 침범하지 못하기 때문에, 여러 프로세스가 이러한 제약 조건을 제거하는 것에 동의한다는 가정 하에 메모리를 공유하는 방식. 일정 메모리 영역을 공유 메모리 영역으로 제공함. 관련된 프로세스들은 자유롭게 데이터를 읽거나 쓰는 동작을 수행할 수 있음.
10주차. 메모리 관리
1.메모리 관리의 개요
3가지 주소 할당 방식
-컴파일 시간 바인딩 : 코드와 데이터가 위치해야 하는 주소를 미리 알고 있는 경우 절대 주소를 갖는 코드를 생성
-적재 시간 바인딩 : 컴파일 단계에서 재배치 가능한 형태의 코드를 생성하고 프로그램을 메모리에 적재하는 시점에 절대 주소가 결정됨
-수행(실행) 시간 바인딩 : 코드와 데이터의 위치가 프로그램이 수행되는 중간에 결정됨
정적링킹, 동적 적재, 동적링킹과 공유 라이브러리
주소 공간의 분류 : 논리주소, 물리주소
2.연속 메모리 할당
프로세스가 사용하지 않는 공간은 낭비되어 시스템 효율이 낮음
고정분할할당 : 메모리를 고정된 크기의 N개 파티션으로 분할 (파티션마다 크기가 다를 수 있음) 하고 프로세스마다 1개씩의 파티션을 할당.
-운영체제가 N개의 파티션의 사용 상태를 관리하면서 미할당 상태의 파티션을 새로운 프로세스에게 할당
-파티션보다 프로세스가 사용하는 메모리 크기가 작기 때문에 내부 단편화가 발생하여 메모리 낭비가 발생함
가변분할 할당
-프로세스의 생성 및 종료에 따라서 프로세스가 필요로 하는 량만큼 메모리 공간을 분할하여 사용.
-신규 프로세스는 여유공간보다 작은 크기이므로 시간이 갈수록 여유공간의 크기 작아지고 결국에는 사용 불가능해짐 -> 외부단편화
-가변분할 할당 알고리즘 : 최초적합방법, 최적적합방법, 최악적합방법
3.분산 메모리 할당
-페이징 : 프로세스에게 불연속적인 여러 개의 메모리 공간을 할당하는 방법. 일정한 크기의 메모리 공간을 나누어서 할당하여 할당. 고정된 크기의 프레임과 페이지를 사용하여 내부 단편화 발생
세그먼테이션 : 프로그램이 메모리에 적재될 때에 서브루틴 코드, 라이브러리 코드 등의 함수들이 있으며 스택이나 힙과 같은 변수 영역이 정의됨. 관련 있는 구성요소 단위로 세그먼트를 정의함.
11주차. 가상 메모리
가상메모리 : 프로세스의 논리 주소를 물리 주소로부터 분리하여 가상의 논리 주소 공간을 할당함. 보조기억장치가 가상의 메모리 역할을 수행하여 메모리와 보조기억장치 사이에서 데이터 이동량이 증가함. 물리 메모리에 실제로 필요한 데이터/코드가 없을 때에 처리하는 방안에 대한 설계가 중요함
페이지 대치 알고리즘 : 보조기억장치로부터 메모리를 옮길 신규 페이지의 위치 획득 -> 빈 프레임을 찾아냄 -> 빼앗은 프레임에 새로운 페이지를 읽어오고 테이블 수정 -> 중단된 사용자 프로세스를 재시작
페이지 대치 알고리즘 : 최적페이지대치(OPT), 최근최소사용대치(LRU), 페이지-버퍼링알고리즘
전역대치와 지역대치
스래싱 : 페이지 부재가 계속적으로 발생하여 프로세스를 수행하는 시간보다 페이지 대치를 위해서 소비되는 시간이 더 많아지는 현상. 프로세스에 충분한 개수의 프레임이 할당되지 않았음을 나타냄.
12주차. 파일 시스템
파일 시스템의 기본 기능 : 블록 할당 기능, 디스크의 미사용 블록 관리 기능, 디렉터리 유지 및 관리, 파일 시스템 마운팅/언마운팅 기능
디렉터리의 구조 : 1단계 디렉터리, 2단계 디렉터리, 트리 구조 디렉터리, 비순환 그래프 디렉터리, 일반 그래프 디렉터리
2. 파일의 저장구조 할당
-보조기억장치에서 파일 구조 : 일반적으로 보조기억장치는 문자(바이트) 단위로 접근하지 않고 일정 크기의 블록 단위로 접근. 대체로 보조기억장치로의 접근에는 지연이 발생하기 때문에 한번에 여러 데이터를 읽거나 쓰는 방식이 효율적임
13주차. 대용량 저장장치
1.저장장치의 종류
하드 디스크, CD-ROM, SSD, Memory card&USB Flash Drive
디스크 부착 방식 : DAS(Direct Attached Storage) , Network Attached Storage), SAS(Storage Area Network)
디스크 관리 - 디스크 포맷팅, 디스크의 파티션 구조 (Bootstrap, MBR, VBR)
2.디스크 스케줄링
선입선처리 스케줄링, 최소 탐색시간 우선 스케줄링, 스캔 스케줄링 , 순환 스캔 스케줄링 , 룩 스케줄링
3.저장장치의 성능 향상 방안
버퍼링 기법 - 디스크 캐치 : 디스크에서 자주 참조되는 데이터를 주기억 장치의 커널 공간의 버퍼 영역에 저장하여 관리하는 기법
-RAID(Redundant Array of Inexpensive Disk) : 가격이 저렴한 여러 개의 디스크를 이용해서 고성능의 디스크 시스템을 구축하는 방법. 구현 방식에 따라서 7가지의 RAID 레벨이 정의되고 지속적으로 새로운 방법이 개발되고 제안되고 있음
'학교 & 학원 이론 수업 > 소프트웨어공학과 수업' 카테고리의 다른 글
대용량 데이터 처리(k-mooc 교육과정) (0) | 2023.05.21 |
---|---|
선형대수학 (k-mooc 교육과정) (0) | 2023.05.09 |
확률과 통계 (k-mooc 교육 과정) (0) | 2023.05.09 |
인공지능 (0) | 2023.04.20 |
머신러닝과 빅데이터 분석 (0) | 2023.03.22 |