FastCampus UpStage AI/운영체제

운영체제 - 리눅스 + 프로세스/스레드

하오츠(해석:맛있다) 2024. 10. 21. 20:22

운영체제란?

: 윈도우, 맥 os, 리눅스 

: 운영체제는 자원을 관리하고 할당하는 특별한 프로그램 

: 응용프로그램 -> 운영체제 -> 하드웨어 

 

* 커널 영역

: 운영체제가 적재된 메모리 영역

 

* 사용자 영역

: 응용 프로그램이 실행되는 메모리 영역 

 

커널

: 운영체제의 핵심 부분, 프로세스, 네트워크.. 자원 할당 소스코드

 

리눅스 설정 

- 환경 설정

virtual box : 윈도우 내에 리눅스 운영체제를 사용할 수 있게하는 프로그램 : https://www.virtualbox.org/wiki/Download_Old_Builds_7_0

리눅스 ui : virtual box 에서 리눅스 실행할때, ui  이미지를 설정 

https://releases.ubuntu.com/jammy/

 

- 설치 프로그램

gcc 설치(오픈 소스 컴파일러 모음)  : sudo apt install gcc - y (버전 확인 :  gcc --version )

git 설치 : sudo apt install git (버전 확인 : git --version)

실습환경  : git clone https://github.com/kangtegong/fastcampus-cs

파일 편집기 : sudo apt-get install vim -y

 

- 리눅스 명령어

pwd : 현재 경로 확인

ls -al : 모든 디렉토리(숨김파일 모두) 확인

clear : 화면의 입력했었던 명령어 제거 

cd .. : 상위 디렉토리로 이동

cd ~ : home 디렉토리로 이동(/home/user)

 

* Strace : 시스템 콜을 확인할 수 있는 명령어

strace [명령어] : 명령어 시스템 콜

 strace -o [파일명.파일확장자] [명령어] : 명령어 시스템 콜을 파일명.파일확장자에 입력

vi [파일명.파일확장자]  : 파일 내용 확인

strace -t/-tt/-T [명령어] : 명령어의 타임스탬프도 같이 확인

strace -c [명령어] : 시스템 콜이 얼마나 호출되는지 요약(시간과 몇 번 호출 되었는지)

strace -e trace=[알고싶은 시스템콜] [명령어] : 알고싶은 시스템 콜만 알 수 있게 해줌

 

* 파일

cat [파일명.파일확장자] : 파일 내용 확인

touch [파일명.파일확장자] : 비어있는 파일 생성

rm [파일명.파일확장자] : 파일 삭제

echo ["쓰고자하는 내용"] > [파일명.파일확장자] : ["쓰고자하는 내용"]이 있는 파일생성

gcc [소스코드] -o [실행파일명] : 실행파일 만들기

./[실행파일명] : exe 실행 

cat /var/log/syslog : 시스템 상에서 발생한 로그 확인

 

프로세스

: 실행 중인 프로그램 (같은 프로그램도 별도의 프로세스가 될 수 있음)


프로세스 제어 블록 (PCB : Process Control Block)

: 프로세스를 실행하기 위한 정보 블록(커널 영역 내에 적재된다) 

  - PID : 프로세스 고유 번호 

  - 레지스터 

  - 스케줄링 정보 : CPU 를 얼마나 할당받아서 사용할지

  - 메모리 정보 : 어느 메모리위치에 저장되어 있는지

  - 사용한 파일/입출력파일  정보

 

 

메모리 영역

스택 : 지역변수(높은 주소 -> 낮은 주소)

힙영역 : 사용자 메모리 할당(낮은 주소 -> 높은 주소)

데이터 영역 : 정적변수

코드영역 : 함수

 

문맥 교환

 

문맥(context)

: 실행을 재개하기 위해 기억해야할 정보

 

문맥 교환

: 여러프로세스들이 번갈아가며 실행됌

: PCB에 저장된 정보를 가져오거나 저장해서 현재 상태 위치로 돌아올 수 있도록 한다.

 

프로세스 상태 

new -> ready -> running -> blocked -> terminated

생성 -> 준비 상태 -> 실행 상태 -> 대기 상태 -> 종료 상태

 

리눅스 프로세스 상태

R : 실행상태

S : 대기상태

W : 준비상태

S : 종료상태

Z : 좀비프로세스(프로세스는 종료로 자원이 반환되었으나 커널에 남아있는 상태)

 

종류

프로그라운드 프로세스 : 사용자와 직접적으로 상호작용을 하는 프로세스
백그라운드 프로세스 : 사용자와 직접적으로 상호작용을 하지 않는 프로세스

 

 

스레드

: 프로세스를 구성하는 하나의 실행 흐름

 

<스레드 1 >

    

메모리 영역

: 스레드 간은 프로세스의 자원을 공유한다(힙, 데이터, 코드, 파일)

 

 

 

 

 

 

 

 

'FastCampus UpStage AI > 운영체제' 카테고리의 다른 글

리눅스 실습  (0) 2024.10.23
운영체제 - 페이징과 페이지 테이블  (0) 2024.10.22
운영체제 - 프로세스 동기화  (0) 2024.10.21
운영체제 - CPU 스케쥴링  (0) 2024.10.21