[2024.10.18] 필수 온라인 강의 Part2 운영체제 CH01 오리엔테이션
오리엔테이션
(시스템) 리소스 ; 자원 : 실행에 마땅히 필요한 요소
"리소스 소모/낭비"
"리소스 모니터링"
- 운영체제
컴퓨터 구조 파트에서 학습한 리소스들은 누가 움직이게 만들까 : 운영체제
- 자원을 관리하고 할당하는 특별한 프로그램
- windows, macOs, Linux, android, ios 등등
메모리 내에 운영체제가 적재되는 공간이 따로 있음 : 커널 영역 :
- 메모리 할당, 반환 / CPU 할당, 반환 / 디스크 할당, 반환
- 나머지 영역 : 사용자 영역 : 우리가 쓰는 공간
- 하드웨어와 프로그램 사이에 있는 느낌! : 나라로 보면 정부라고 생각하자!!! 그러면 이해가 잘 된다.
- 여러 부분별로 나누어진 서비스를 제공해줌. 자원관리 등등! - 커널? : 운영체제의 핵심부
- 리눅스 운영체제의 커널 소스코드 : https://kernel.org/
- 리눅스운영체제는 오픈 소스이다.
- 파일 시스템, 프로세스 관리, 네트워크관리, 메모리 관리 등등
- 커널 == 운영체제라고 신경쓰면 됨
운영체제중에 커널이 아닌 것 : 사용자 인터페이스 - 개발의 편의를 제공하는 운영체제
- 모든 응용프로그램은 자원(하드웨어)에 직접 접근 X
- 응용프로그램은 운영체제를 통해서만 접근이 가능하다. 하드디스크에 접근하려면 무조건 한번 거쳐야한다!
- 문지기 역활이라고 보자 - 이중모드
- 커널 모드: 운영체제 서비스를 제공받을 수 있는 모드 (입출력 가능)
- 직접적 자원 접근 X 커널영역에 접근을 해야 가능함
- 사용자 모드: 운영체제 서비스를 제공받을 수 없는 모드 (입출력 불가능)
- 여러 단계로 나눈 권한: 보호 링(protection ring) 으로 발전
- 시스템 콜: 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 것
사용자 모드에서 운영체제 서비스를 받기 위해 커널 모드로 전환!!!!!!
- 소프트웨어 인터럽트의 일종
- 운영체제의 서비스 : 커널이 제공해주는 핵심적인 서비스!
- 프로세스 관리
- 자원 관리 접근 및 할당 : cpu, 메모리, 보조기억장치&입출력장치
- 파일 시스템 관리 - 파일 시스템 / 파일/디렉터리
[실습] 가상 머신에 리눅스 설치
- 가상 머신 virtual box : https://www.virtualbox.org/
- 이 위에, 리눅스, 오븐투라고 하는 리눅스 운영체제 설치
- 가상 머신 : 프로그램적으로 만들어진 가상의 컴퓨터
- 가상 머신 위에 윈도우, 오븐투 등의 운영체제를 설치 가능 -> 컴퓨터안에 컴퓨터를 생성
- virtual box 7.1 windows host 로 설치 - 운영체제의 이미지 파일도 준비를 해야함
- ubuntu 설치 : https://ubuntu.com/download
- ubuntu라고 하는 리눅스를 가상머신위에 설치를 할 거임
- ubuntu 24.04.1 설치 - 실습
- VirtualBox 설치
- ubuntu 올리기
무인 설치 건너뛰기 후에 다음 버튼
- 컴퓨터 환경에 따라 cpu 1~2개 선택
- 메모리는 기본으로
- 가상 하드 디스크도 기본으로
확인 후 완료 누르기
- 가상머신 생성 완료
- 실제 운영체제 설치
시작 누르기
시작하여 try or install 누르기
- 언어를 영어로 설정하고 install 을 누르기
- Minimal installation을 선택해도 됌
- 직접 구획하고 설정하기 : 파티셔닝 가능
- 자동설정으로 설정하여 설치
- 호스트이름과 비밀번호 설정하기
- restart now 하면 재설정됨
strace 기반 시스템 콜 관찰
- strace : 시스템 콜을 추적하기 위한 도구
- 어떤 명령어, 프로그램의 시스템 콜을 알 수 있음
- 제대로 공부하고 싶으면 man strace를 학습하기!!!!!!! man(manual의 약자)
- 설치 방법 : # apt-get install strace , (# apt-get update)
- 기본 사용법
1. $ strace COMMAND
- ls : 현재 폴더의 파일과 폴더를 조회하라 (명령여, bin에 있는 프로그램이다.)
- pwd : 현재 경로 출력 (명령어)
2. $ strace -p PID
- $ strace -p 123의 식으로 사용함
- , PID는 고유한 번호
3. $ strace ls
- 호출결과
- $ strace -o output.txt ls : 시스템 호출 결과를 콘솔에 출력하지 않고 파일로 저장
- $ strace -c ls : 시스템 호출 요약 결과 출력
- $ strace -e trace=open,read ls : 실행 파일의 시스템 호출 결과 필터링
- 너무 많이 호출하면 성능이 저하, 그 때 사용됨
- 시간과 시스템 호출 결과 출력
- $ strace -t ls : 타임스탬프
- $ strace -tt ls 밀리세턴드 타임스탬프
- $ strace -T ls 각 시스템 호출 소요 시간
- 시스템 콜 출력 화면
대표적인 리눅스 시스템 콜
- 운영체제 파트의 소스 코드 : https://github.com/kangtegong/fastcampus-cs
- os 디렉터리 - 수많은 시스템 콜이 있음
- https://man7.org/linux/man-pages/man2/syscalls.2.html
-https://chromium.googlesource.com/chromiumos/docs/+/HEAD/constants/syscalls.md#tables
- 시스템 콜 중 일부 학습
- open : 파일을 여는 시스템 콜. 파일 디스크립터 반환.
* 파일 디스크립터(file descripter) – 파일을 가리키는 고유한 값
- 리눅스 환경은 file을 굉장히 특별하게 봄( 디렉터리, 장치, 소켓 등등 모두 파일로 간주)
- 굉장히 많이 사용되는 시스템 콜 - close : 파일을 닫는 시스템 콜 (파일 관련 자원 해제)
- read : 파일 디스크립터에서 데이터를 읽어들이는 시스템 콜
- write : 파일 디스크립터에 데이터를 쓰는 시스템 콜
- fork : 프로세스 복제하여 자식 프로세스 생성 / 복제된 프로세스를 다시 프로세스로서 생성
- 프로세스들이 계층적으로 구성되는 원리 ( 부모프로세스와 자식 프로세스가 있다.) - exec : ( execl, execle, execlp, execv, execve, execvp)
- 자식 프로세스로 하여금 다른 코드를 실행토록 하기
- 현재 프로세스의 주소 공간을 새로운 프로세스로 덮어쓰기 - getpid : PID를 반환하는 시스템 콜 : pid가 무엇인지 알고 싶을때 사용하면 됨
- pid는 프로세스가 가진 고유한 값, - getppid : 부모 프로세스 PID를 반환하는 시스템 콜
- syslog : 시스템 로그 메세지 남기기 : 로그를 임의로 남기는 시스템 콜
- exit : 실행 중인 프로그램 종료
'Study > CS 기초' 카테고리의 다른 글
운영체제 - 가상 메모리 관리 (3) | 2024.10.21 |
---|---|
운영체제 - 동기화와 교착상태 (2) | 2024.10.21 |
운영체제 - CPU 스케줄링 (2) | 2024.10.19 |
운영체제 - 프로세스와 스레드 (5) | 2024.10.19 |
컴퓨터 구조 전체 보기 (4) | 2024.10.15 |