Study/CS 기초

운영체제 거시적으로 보기

김 도경 2024. 10. 19. 16:40

[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 올리기
    새로만들기 누르기
    가상 머신 이름 지정이랑 ISO 이미지 지정
    무인 설치 건너뛰기 후에 다음 버튼
    - 컴퓨터 환경에 따라 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 각 시스템 호출 소요 시간

    - 시스템 콜 출력 화면

대표적인 리눅스 시스템 콜

- 시스템 콜 중 일부 학습

  • 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