반응형

 

 

 

 

 

 

 

 

 

 

1. 프로세스간 통신(IPC)

 

- IPC 구현 방법

: Unnamed pipe - 부모 자식 프로세스 간의 통신에 사용한다.

: Named pipe - 상관관계 없는 프로세스들 간의 통신에 사용된다.

: Socket - 다른 컴퓨터상에서 동작하는 프로세스들간의 통신에 사용된다.

(같은 컴퓨터상에서도 이용 가능)

 

- 파이트 개요

: 단방향 통신( 양방향 통신을 위해서는 2개의 파이프를 사용해야함 )

: FIFO를 지원하는 특수 파일 - mkfifo 명령어를 사용해서 생성

 

 

 

 

 

2. Pipe기반 생산자 프로그램

 

 

 

 

3. 소비자 프로그램

 

 

4. 단방향 프로그램 결과

 

 

5. 양방향 생산자 프로그램

 

 

 

 

 

 

 

6. 양방향 소비자 프로그램

 

 

 

 

 

7. 양방향 IPC 통신 결과

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

 

 

 

 

 

 

파일 통신을 해보자

생산자 프로그램과 소비자 프로그램은 shared.txt라는 파일을 통해서 통신을 수행하는 병행 프로그램이다.

 

 

1. 생산자 프로그램

 

 

 

 

2. 소비자 프로그램

 

 

 

 

: fseek를 사용해서 6번째 줄부터 출력

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

 

 

 

 

 

1. ls -l

 

 

 

 

 

 

2. chmod (Change Mode)

: 파일의 소유 권한을 바꾸는 명령어 -> 파일의 소유자만 바꿀 수 있다.

 

1) 첫 번째 방법

$ chmod [ugao][+-][rwx] [파일 / 디렉토리명]

- u : 사용자

- g : 그룹

- o : 기타 사용자

- a : 위 모든 경우

 

- + : 권한 첨가

- - : 권한 삭제

 

- r : 읽기 허가

- w : 쓰기 허가

- x : 실행 허가

 

 

 

2) 두 번째 방법

$ chmod [8진수 표기] [파일 / 디렉토리명]

- 허가 비트를 표시 : 허가는 1, 비허가는 0

- 'rwxrwxrwx'의 경우, '11111111' 이므로 다시 8진수로 표기하면 '777'이다.

- 'r-xr-xr-x'의 경우, 허가사항을 표시하면 '101101101'이므로 다시 8진수로 표기하면 '555'이다.

 

 

 

 

 

 

 

 

 

3. tar

: 지정된 여러 파일을 아카이브 라고 부르는 하나의 파일로 만들거나, 하나의 아카이브 파일에 집적된 여러 개의 파일을 원래의 형태대로 추출하는 명령이다.

$ tar [옵션] [만들 파일이름] [묶을 파일이름]

옵션

- c : tar 파일을 생성할 때 사용한다.

- x : 묶인 tar 파일을 해체할 때 사용한다.

- v : 파일을 묶거나 해체할 때 그 과정을 상세히 보여준다.

- f : 사용할 tar 파일을 지정한다.

 

 

 

 

< 파일을 묶을 때 >

$ tar cvf [만들 파일이름.tar] [묶을 파일이름 또는 디렉토리]

 

 

< 묶여있는 파일을 풀 때(압축도) >

$ tar xvf [묶여 있는 파일이름.tar]

 

 

< tar 와 압축 혼합 사용법 >

$ tar cvfz [만들 파일이름.tar.gz] [묶을 파일이름 또는 디렉토리]

 

 

 

 

 

4. 관리자 계정으로 전환하기

$ su

+ 비밀번호 입력

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

 

 

 

 

 

1. 파일 시스템 구조

- 파일 구조 : 논리적 저장 단위, 관련 정보의 집합

- 파일 시스템

: 많은 양의 자료를 영구적으로 보관하도록 보조 저장 장치에 설계한다.

: 디스크 파일 시스템으로 파일 사용을 구조화한다.

- 파일 시스템 종류

: Linux - ext, ext2, ext3, ext4

: Windows - FAT, FAT32 등

: 운영체제는 여러개의 파일 시스템을 사용할 수 있다.

: 운영체제는 디스크 내에 하나 이상의 파일 시스템을 구성할 수 있다.

 

컴퓨터 포렌식(영어: computer forensics, computer forensic science) 또는 컴퓨터 법의학( - 法醫學)은 전자적 증거물 등을 사법기관에 제출하기 위해 데이터를 수집, 분석, 보고서를 작성하는 일련의 작업을 말한다.

 

 

 

 

 

 

 

2. UNIX 파일 시스템 구조

1) 부트스트랩

: 부팅에 사용되는 로더 프로그램이다.

: 시스템 시작 전 파일시스템 로드를 수행한다.

 

2) 슈퍼블럭

: 파일 시스템 주요 정보를 관리한다.(파일의 개수 등)

: 블록 총 수, 자유 블록 수, i-node 리스트의 크기 등

 

3) i-node : 파일 관리 단위 ( 하나의 파일 )

: 파일의 디스크 저장 위치 정보

: 파일의 소유자, 접근허가, 접근 시간 등

 

4) 데이터블록

: 파일의 실제 데이터를 저장한다.

 

-> 삭제할 때는 i-node만 삭제하고, 데이터 블록은 지워지지 않은 채로 나중에 새로운 데이터가 들어오면 덮어씌워 진다.

 

 

 

 

 

 

 

3. FAT 32 파일 시스템 구조

1) 부트 섹터 & 예약 영역 (부트스트랩 과 비슷)

: 예약 영역의 크기, 섹터의 바이트 수 등등

 

2) FAT 영역 (슈퍼 블락과 비슷)

: 각 파일이 저장된 클러스터들의 인덱스를 체인 형식으로 기록한다.

 

3) 루트 디렉토리 및 데이터 영역

: 루트 디렉토리 - 파일들과 서브디렉토리들의 이름, 생성시간, 수정시간, 접근시간, 저장위치를 기록한다.

: 데이터 영역 - 클러스터 단위로 파일이나 서브디렉토리 정보를 저장한다.

 

 

 

 

 

4. NTFS 파일 시스템 구조

주요 특징 

: 윈도우 2000, NT, XP 등에 사용한다.

: 데이터 암호화 기능을 지원한다.

 

 

 

 

 

- 부트레코드(부트스트랩과 유사) - FAT 부트섹터와 유사하고 더 간단하다.

- MFT(슈퍼블락과 i-node) - 모든 파일과 디렉토리 정보를 저장하는 테이블이다.

- 데이터 영역 : 4K 고정 크기의 클러스터 단위로 관리한다.

 

 

 

 

 

 

5. 가상 파일 시스템

: 여러 종류의 파일 시스템에 대해 같은 시스템 호출 인터페이스(API)를 사용한다.

 

 

 

 

 

 

6. 할당 방법

: 파일들을 디스크 공간에 배치하는 방법

1) 연속 할당

2) 연결 할당

3) 색인 기법

 

 

 

 

 

7. 연속 할당

: 각 파일이 디스크의 연속된 공간을 차지한다.

: 간단함 - 블록들의 시작 주소와 개수만 필요하다.

: 탐색 시간을 최소화할 수 있다.

: 랜덤으로 접근한다.

: 가용공간 관리가 어렵다.

: 빈 공간이 낭비된다. (외부 단편화)

 

 

 

 

 

8. 연결 할당

: 각 파일은 디스크 블록의 연결 리스트이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

 

1. 파일 = 관련된 정보 자료(책 등)들의 집합

: 레코드 혹은 블록 단위로 보조 기억장치에 저장된다.

 

 

2. 파일시스템 = 사용자의 자료(데이터, 프로그램 등)를 저장하는 파일들의 집합

: 파일을 분류하고 관리하는 방법이다.

 

 

3. 파일의 속성

1) 파일의 이름

2) 이름 이외의 속성 = 메타 데이터

 

- 인식자 : 숫자로 표현된 파일을 인식하는 고유 태그

- 유형 : 확장자로 파일의 종류 구분

- 위치

- 크기

-  보호, 소유자, 생성시간, 수정 및 접근 시간 등

 

 

 

4. 파일 연산

- 파일 생성 및 삭제

- 파일 열기 및 닫기

- 파일 읽기 및 쓰기

- 파일 공유 및 보호

- 파일 내의 위치 재설정

- 파일 절단 : 파일의 내용은 지우지만, 속성은 유지

 

 

 

 

5. 파일 열기

: 파일에 대한 입출력 준비 단계

< Open File Table >

- 파일 포인터

- 파일 오픈 계수

- 파일의 디스크 위치

- 접근 권한

 

 

 

 

6. 파일의 유형

- 일반적인 파일의 유형

1) 데이터 : 숫자, 아스키 문자, 이진 데이터

2) 원시 프로그램, 목적 프로그램

3) HWP, MS Word 문서

 

- 파일 형식 구별

: 파일 이름에 형식 정보를 포함해야 한다.( 확장자 사용 -> 리눅스 )

 

 

 

 

7. 파일의 접근 방법

1) 순차 접근

: 파일의 정보는 레코드 단위의 순서로 처리한다.

 

 

2) 직접 접근

: 주소를 가지고 임의의 레코드에 접근한다.

: 대규모 정보 접근에 유용하다.

 

 

 

 

 

 

 

8. 디렉토리 구조

1) 장치 디렉토리

: 각 파티션에 존재하는 파일에 대한 정보를 기록한다. (C드라이브, D드라이브, ...)

: 각 파일이 있는 장소를 쉽게 찾도록 디스크의 요소를 분할 및 검색하는 정보를 포함하는 레코드의 집합이다.

 

2) 디렉토리 관리 동작들

: 파일 탐색, 생성, 복사, 삭제

: 디렉토리 나열

: 파일 재명명, 파일 시스템 횡단

 

 

3) 디렉토리 속성

: 이름, 인식자, 주소, 현재크기, 최대크기

: 마지막 접근 시간, 마지막 갱신 시간, 소유자 ID, 보호

 

 

 

 

4) 저장 장치의 구조

전형적인 파일 시스템 구조

 

 

 

 

9. 1단계 디렉토리

: 가장 간단한 디렉토리 구조

: 파일이 많아지거나, 다수의 사용자에 사용을 제약한다.

- 이름 명명 및 그룹화 문제

 

 

 

 

10. 2단계 디렉토리

: 1단계 디렉토리에서 서브폴더 하나 추가

 

1) Master File Directory

: 사용자가 로그인하면 검색가능

2) User File Directory

: 각 사용자에게 개별 디렉토리를 제공

3) 효율적인 탐색 방법이다. 다만, 그룹화 기능은 없다.

 

 

 

 

 

 

11. 3단계 디렉토리

: 한 디렉토리에 파일들과 부 디렉토리들을 가진다.

- 효율적인 탐색, 그룹화가 가능하다.

: 현재 디렉토리

- 사용자가 현재 관심을 가지는 대부분의 파일을 수록한다.

 

 

 

 

 

 

 

12. 비순환 그래프 디렉토리 -> 바로가기

: 파일이나 부 디렉토리들의 공유를 허용한다.

 

- 공유 파일 또는 디렉토리의 구현

: 링크라는 새로운 디렉토리 항목을 생성한다.

: 공유 파일 정보를 복사한다.

 

 

- 삭제 문제 : dangling pointer

back pointer : 링크를 추적하여 삭제한다.

파일 참조 목록을 유지한다.

참조 계수를 유지한다.  (다른 애가 참조하고 있으면 파일 말고 링크만 삭제한다.)

 

 

 

 

 

13. 일반 그래프 디렉토리

: 비순환 그래프 디렉토리와 다르게 링크가 아래서 위 방향으로도 나 있는 디렉토리

 

- 순환 탐색으로 무한 루프 가능성(Live Lock)

- 순환의 자기 참조 문제점

: 참조 계수가 0일 때, 파일을 삭제할 수 있다.

: 순환으로 인해 참조되지 않은 디렉토리의 참조 계수가 양수이면 삭제할 수 없다.

: 쓰레기를 수집하게 될 수 있다.

 

 

 

 

 

 

14. 파일 시스템 마운팅

1) 파일 시스템 장착 : 프로세스가 파일 시스템을 사용하도록 접근 경로를 지정한다.

2) 미장착 파일 시스템은 접속 지점에서 마운트 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'Computer Science > Operating System' 카테고리의 다른 글

Practice 7) Linux Basic Commands 2  (0) 2020.12.18
Theory 9) File System Implementation  (0) 2020.12.17
Practice 6) Thread & Semaphore 2  (0) 2020.12.17
Practice 5) Thread & Semaphore 1  (0) 2020.12.17
이론 7) 가상 메모리  (0) 2020.12.03
반응형

 

 

 

 

 

 

 

 

 

 

 

 

1. Using 'full' and 'empty' variables

to make producer wait when buffer is full, and to make consumer wait when buffer is empty

 

 

 

 

 

 

 

2. Fix deadlocked code

: It should be same order between producer's sem_init and consumer's sem_init

Because if the sem_init order is not the same, it will be in the following state

mutex1 = 0, mutex2 = 0

So, nobody can pass sem_init.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts