운영체제란?
: 윈도우, 맥 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 : 좀비프로세스(프로세스는 종료로 자원이 반환되었으나 커널에 남아있는 상태)
종류
프로그라운드 프로세스 : 사용자와 직접적으로 상호작용을 하는 프로세스
백그라운드 프로세스 : 사용자와 직접적으로 상호작용을 하지 않는 프로세스
스레드
: 프로세스를 구성하는 하나의 실행 흐름
메모리 영역
: 스레드 간은 프로세스의 자원을 공유한다(힙, 데이터, 코드, 파일)
'FastCampus UpStage AI > 운영체제' 카테고리의 다른 글
리눅스 실습 (0) | 2024.10.23 |
---|---|
운영체제 - 페이징과 페이지 테이블 (0) | 2024.10.22 |
운영체제 - 프로세스 동기화 (0) | 2024.10.21 |
운영체제 - CPU 스케쥴링 (0) | 2024.10.21 |