Dreaming Deve1oper

Summary 본문

리눅스, 유닉스

Summary

주현테크 2021. 10. 19. 23:40

■ Functions of OS

- Process managemetnt (CPU scheduling)  - Memory management                               ※ Kernal의 핵심- File system- I/O system- Device driver- Network system- Protection and Security- Virtualizaition

 

■ Process

- 프로그램을 실제로 띄워 메모리에서 수행하는 과정 중에 있는 것

- Process 와 Program의 차이점 -
- Process State -

 

 

Context Switch

프로세스가 번갈아가며 CPU를 점유하는 것.

현재 있는 상태를 저장하고 선택된 프로세스에 저장됐던 상태를 메모리 로드. > 프로세스가 왔다갔다하며 CPU를 점유하는 것 처럼 보인다.

 

 

■ Fork

 

 

 

■ IPC system

- shared memory

 

- pipe: 가장 효과적인 방법

 └ 프로세스간에 데이터를 주고 받을 수 있는 파이프를 설치.

 

 

 

■ Thread

같은 프로세스 안에 실행되는 상황이 다른 것.

 

프로세스와의 차이점?

- 프로세스는 서로 다르면 거의 공유하는 데이터가 없다. 하지만 스레드는 대부분을 공유한다.

■ Multicore Programming

 

■ Amdhl's Law


데드락에서 발생하는 4가지 요건


 

Users and Groups

□ User ID

- 각 사용자에 대한 식별을 위한 고유한 양의 정수이다.
- 각 공정은 정확히 하나의 Uid와 연관되어 있다.

 

□ Group ID (gid)
- 각 사용자는 하나 이상의 그룹에 속할 수 있다. > 여러 개의 그룹에 속 할 수도 있다.

 

□ Root (super user)

- 시스템에서 거의 모든 작업을 수행할 수 있다.
- UID는 0.

 

■ Permissions

- 각 파일은 Owning user, owning group 및 사용 권한 비트 집합과 연결됩니다.
- 권한 비트는 abliity of owner, group, others for read, write, execute를 설명한다.

 ┗  Owner, Group, Others 3개가 각각 Read, Write, Execute 권한을 가지게 된다.

 

 

■ User ID and Group ID

User ID는 OS가 관리하는 숫자.

 

□ /ext/passwd and / et/group

- 숫자 값과 이름 간의 매핑

 

- username:password:uid:gid:comment:home directory:login:shell (/etc/passwd)
┗ 암호 x는 섀도 암호가 적용되었음을 의미.

 

- group name:passwrod:gid:users (/etc/group)

 

 

□ getpwuid() / getpwnam()

□ Return Values

- 성공하면 Passwd 구조로 포인터를 반환.

- 실패하면 NULL을 반환.

 

 

Foreground/Background Process

- 모든 Process는 group이 존재하고 이는 Session으로 묶인다. 그리고 Session은 Terminal과 연동된다.

 

□ Foreground process: Terminal에 보여서 수행되는 프로그램- 프로세스는 Ctrl c 또는 Ctrl z와 같은 신호를 포함하여 터미널에서 입력을 가져옴.

 

□ Background Process: Terminal에 떨어져서 background에서 스스로 돌아가는 프로그램 (Terminal로 control 불가능)

- 명령행 끝에 있는 ampersand & symbol (=앰퍼샌드 & 기호)

- 제어 터미널 없이 프로세스가 실행됨.

 

■ Job Control

- foreground jobs & background jobs

 

□ Jobs

- 수행하는 작업이건 아니건 모든 작업을 나열시킴.

 

□ foreground (fg)

- 현재 또는 지정된 작업을 맨 앞으로 가져온다.

 

□ background (bg)

- 현재 또는 지정된 작업을 백그라운드로 배치한다. 

 

□ Stopped job

- 작업은 Ctrl z로 종료된다.

 

 

Read/Effective User/Group IDs (36:00)

 

 

 

Daemon Process

■ Deamon

- 데몬은 어떠한 제어 터미널도 연결하지 않고 백그라운드에서 실행되는 프로세스임.

- 일반적으로 데몬은 부팅할 때 시작됨.

- 일반적으로 데몬의 이름은 -d로 끝나지만 (crond 및 sshd[원격접속 프로그램]에서와 같이) 이는 필수는 아니며 보편적이지도 않음.

 

□ Deamon의 요구사항

- Init의 하위 항목으로 실행되어야 함.

- 터미널에 연결해서는 안 됨.

 

 

 

Signals

- 비동기 이벤트를 처리하기 위한 메커니즘을 제공하는 소프트웨어 인터럽트이다.

 └ 사용자가 인터럽트 문자를 생성함.

 

- 프로세스 간 통신(IPC)의 원시적인 형태로서 한 프로세스는 다른 프로세서에 신호를 보낼 수도 있다. 

 

- 모든 Signal은 접두사 SIG를 붙인다.

- Example of Signals -

 

■ Sending a signal

 

□ kill()

- 한 프로세스에서 다른 프로세스로 신호를 보냄.

 └ kill 유틸리티의 공통된 기초

#include <sys/types.h>
int kill (pid_t pid, int signo);

- Return Values

 └ 성공하면 ()를 반환한다

 └ 오류 발생 시 -1을 반환하고 오류 없음이 설정됩니다.

 

 

□ killpg()

- 지정된 프로세스 그룹의 모든 공정에 신호를 보냄.

#include <signal.h>
int killpg (int pgrp, int signo);

 

 

Reentrancy (재진입 함수)

- Reentrancy 함수는 두 개의 스레드에 의해 호출되었을 때 실제 실행이 인터리브되더라도(SUSv3에 의해 정의됨) 스레드가 정의되지 않은 순서대로 차례로 함수를 실행하는 것과 같이 효과를 나타내는 함수임.

- 커널이 신호를 올릴 때 프로세스는 어디에서나 코드를 실행할 수 있다.
 └ 예를 들어, 프로세스가 중단될 경우 일관성 없는 상태가 되는 중요한 작업의 중간일 수 있다. (데이터 구조가 절반만 업데이트됨)

- 신호 핸들러는 재진입된 함수만을 사용해야 한다.

- Example of Reentrant functions -

 

TIME

□ Real Time

- 현실 세계의 실제 시간과 날짜를 의미.

 

□ Process Time

-프로세스 사용자 공간 및 커널 공간에서 소비한 시간을 의미.

 

□ Unix Epoch

- 1970년 1월 1일 오전 00:00:00 UTC 또는 GMT로 정의.

Universal Time, Coordinated /  Greenwich Mean Time

└ Unix 시스템은 1970년대에 시작했다.

 

- Unix 시스템은 epoch 이후 경과된 초의 수로 절대 시간을 나타냄.

 

 

■ Time Functions

 

- time()

#include <time.h>
time_t time (time_t *tloc);

- Return values └ 성공하면 Epoch 이후 시간 초의 값을 반환합니다. └ 오류 발생 시 -1을 반환하고 오류 없음이 설정됩니다.

 

- tloc는 재사용이 불가능하며 반환 값도 tloc가 가리키는 메모리에 저장됩니다.

 

 

 

Option Parsing

- getopt()

#include <unistd.h>

int getopt (int argc, char * const argv[], const char * optstring);

extern char * optarg;
extern int optind, opterr, optopt;

- Return values └ 각 옵션 요소의 문자 연속 └ ?: 오류 옵션 문자 └ -1: 모든 명령줄 옵션이 구문 분석됨

 

- argc 및 argv는 main() 함수에 점달되는 인수의 개수 및 배열이다.

 

- optstring은 올바른 옵션 문자를 포함하는 문자열이다. └ 올바른 옵션 문자는 표시되는 문자이다. └ 콜론(:) 뒤에 이러한 문자가 오는 경우 옵션에는 인수가 필요하다.

 

 

 

 

 

 

'리눅스, 유닉스' 카테고리의 다른 글

Exercises  (0) 2021.12.13
총정리  (0) 2021.12.04
CPU Scheduling  (0) 2021.10.18
Operating System Concept  (0) 2021.10.16
Comments