본문 바로가기
학점은행제

[컴퓨터시스템]학습복습 - 프로세스, UNIX 사용자,시그널

by 코곰 2021. 5. 26.

본 복습 내용은 아이티뱅크 컴퓨터시스템 강의를 바탕으로합니다.

 

1. 프로세스의 개념 및 종류

* 프로세스(process)의 정의

: 현재 실행 중인 프로그램

: 프로그램 - 어떤 목적을 달성하기 위해 사용되는 명령어 혹은 유틸리티 집합

: 프로그램 실행 시 메모리(RAM - 주기억장치)에 저장, 이를 프로세스라 함

: 시스템프로세스 - 시스템운영에 필요한 명령 수행

: 사용자프로세스 - 사용자들에 의해 실행

: Foreground 프로세스 - 명령 입력 후 수행종료까지 기다려야 함

: Background 프로세스 - 입력에 관계 없이 실행됨

: 멀티태스킹 (multitasking) - 다수의 프로그램이 background process로 실행 중에, 새로운 프로그램을 foreground process로 실행시킬 수 있음

 

 

2. 부모 - 자식 프로세스 

: 프로세스에는 부모-자식 관계 O

: 부모 프로세스가 자식 프로세스 생성

: 프로세스 - 고유한 번호 PID (Process Identification Number) 소유

: 부모 프로세스 - 고유한 번호 PPID (Parent Proccess Identification Number)도 소유

 

: 시스템 부팅 시, 모든 프로세스의 root인 init 프로세스(PID = 1)실행

: init 프로세스가 다른 프로세스들 FORK 로 생성

 

: 사용자 명령 - 쉘의 자식 프로세스

 

 

3. 프로세스 생성

(1) fork

: 메모리를 할당받아 복사본 형태의 새로운 프로세스 실행

: 기존 프로세스는 그대로 실행

: 새롭게 생성된 프로세스도 기존 프로세스와 똑같은 코드

(2) exec

: 기존 프로세스를 새 프로세스로 대체

: 기존 프로세스 메모리에 새 프로세스 코드를 덮어씌움

 

 

4. 프로세스 초기화

: 프로그램이 실행되려면 프로그램과 데이터가 메모리에 적재 필요

 

 

5. init 프로세스

: 부팅 과정에서 커널이 PID = 0 인 swapper 프로세스 생성

: swapper가 init 프로세스 생성

: init 프로세스가 사용자 환경에 필요한 스크립트 실행해 사용자 환경 구축

 

: 파일 시스템 구조검사, 마운트, 서버 데몬 띄움, 사용자 로그인 대기, 사용자 위한 쉘 띄움

 

 

6. 시그널 (Signal)

: 프로세스 간 통신에 사용

: 시그널 목록 확인

$ kill -l

 

7. 프로세스 확인

* 프로세스 목록 출력

$ ps  [옵션!]

: 현재 실행 중인 프로세스 정보

 

* 주기적으로 현재 실행 중인 프로세스 정보 출력

$ top

 

 

8. Foreground, Background 이해

* 쉘은 프로세스를 job 단위로 처리

* UNIX는 다중 작업 (Multitasking) OS

* Foreground(포그라운드, 전위)와 Background(백그라운드, 후위) 처리 방식으로 작동

 

* Foreground - 사용자가 입력한 명령을 쉘이 해석하여 실행 결과를 출력할 때까지 기다려야 함

- 예시

$ find / -name passwd
//find 명령 종료 때까지 기다려야 한다

 

* Background - 여러 프로세스 동시에 실행 가능, 명령 처리 끝나기 전에도 다른 작업 수행 가능함

- 명령 Background 타입 으로 실행하려면 & 추가

$ find / -name passwd > pw.dat & //리다이렉션으로 실행 결과 파일로 저장

 

* Background 작업 목록 확인

$ jobs [%작업]

 

* Background -> Foreground전환!!

$ fg [% 작업 번호]

 

 

9. 작업종료

* 프로세스는 인터럽트 시그널 받으면 종료

* 포그라운드- Ctrl+C

* 백그라운드- kill명령

 

* 로그아웃 이후에도 백그라운드 작업 실행

$ nohup  [작업 내용]

 

 

10. 사용자 전환

* 로그인한 사용자 정보 보기

$ users

* 로그인한 사용자 정보 자세히 출력!

$ who [옵션]

* 본인 정보  체크

$ who am i

* 현재 사용자의 로그인 ID, 그룹 정보 출력!

$ id

* 사용자 전환

$ su [-] [username]

 

 

댓글