Post

Ch2. Operating-System Structures

Ch2. Operating-System Structures

목차

  • 운영체제 시스템 서비스
  • 사용자와 운영체제 시스템 인터페이스
  • 시스템 콜
  • 시스템 서비스
  • 링커와 로더
  • 어떤 프로그램 특정 OS에서만 동작하는 이유
  • 운영체제 시스템 디자인과 구현
  • 운영체제 시스템 구조
  • 운영체제의 빌드와 부팅
  • 운영체제 시스템 디버깅

    목표

  • 운영체제가 제공하는 서비스 식별
  • 시스템 콜 이 서비스 제공에 어떻게 사용되는지 설명
  • OS 설계 전략 비교 및 대조
    • monolithic
    • layered
    • microkernel
    • modular
    • hybrid
  • 운영체제를 부팅하는 과정 설명
  • 운영체제 성능 모니터링 도구 활용
  • 리눅스 커널과 상호작용할 수 있는 커널 모듈을 설계하고 구현하기

    운영체제 서비스들

    운영체제는 프로그램들과 사용자에게 프로그램이나 서비스를 시킬 수 있는 환경을 제공한다.

    • 사용자 인터페이스
    • 프로그램 실행
    • 입출력 관리
    • 파일시스템 조작
    • 통신 - 같은 컴퓨터 내 혹은 네트워크 사이 다른 컴퓨터들과
    • 에러 검출
    • 자원 할당
    • 로깅
    • 보호와 보안
      • 보호: 시스템 자원에 접근을 제어
      • 보안 : 외부로부터 시스템을 방어, 사용자 인증, 접근 권한 설정 

운영체제 사용자 인터페이스

CLI (Command Line Interface)

CLI (Command Line Interface)는 사용자가 직접 명령어를 입력할 수 있게 한다.

  • CLI는 커널에 직접 포함되기도하고, 시스템 프로그램 형태로 별도로 존재할 수 도 있다.
  • CLI는 여러 종류가 있을 수 있고, 이를 shell이라고 한다.
  • 사용자의 명령어를 받아서 해당 명령어를 실행함
  • 명령어의 종류
    • built-in : cd, exit, echo 등 쉡 안에서 직접 동작
    • 외부 프로그램의 이름 - 별도 실행 파일을 호출함 (ls, gcc 등)

      GUI (Graphical User Interface

  • 아이콘으로 파일, 프로그램, 동작 등을 표현
  • 마우스 클릭/오버 등으로 정보 확인 , 실행, 폴더 열기 등의 동작 수행 가능
  • 폴더 : 디렉터리의 시각적 표현

    시스템 콜

    OS에서 제공해주는 프로그래밍 인터페이스 이다. 고수준 API를 이용해 system call를 사용할 수 있다.

  • 보통, 각 시스템 콜은 숫자 번호가 연결되어 있음
  • 시스템 인터페이스는 이 번호에 따라 테이블을 유지하며 연결된 항목을 찾음
  • 시스템 콜 인터페이스는 운영체제 커널의 시스템 콜을 호출하고, 그 결과 상태와 리턴 값을 사용자에게 되돌려줌
  • 시스테 콜이 어떨게 구련되었는지 전혀 몰라도 됨 -> 그냥 갔다가 쓰고, 결과에 따른 처리만 해주면 됨
  • 근데 호출할때 많은 정보가 필요할 때가 있음
    1. 가장 간단한 방법: 매개변수를 레지스터(register) 에 넣어 전달   ▶ 어떤 경우에는 전달해야 할 매개변수가
      • 레지스터 수보다 많을 수 있음
    2. 블록(block) 또는 테이블(table) 에 매개변수를 저장하고   그 주소(address)를 레지스터에 넣어 전달   ▶ 이 방식은 Linux와 Solaris에서 사용됨
    3. 매개변수를 스택(stack)밀어넣고(push),  운영체제가 스택에서 꺼내는(pop) 방식

      시스템 콜의 종류

  • 프로세스 제어
    • create, terminate
    • end, abort
    • load, execute
    • get attributes, set attributes
    • wait for time
    • wait event, singal event
    • allocate and free memory
    • dump memory if error
    • debugger - bugs, signle step execution
    • locks - 프로세스간 공유 데이터 접근 관
  • 파일 관리
    • create, delete
    • open, close
    • read, write, reposition
    • get and set file attributes
  • 장치 관리
    • request, relsease
    • read, write, reposition
    • get / set attributes
    • logically attacth or detach device
  • 정보 유지
  • 통신
    • create, delete 통신 연결
    • send, receive messagees - 호스트 이름 또는 프로세스 이름
    • shared-memory
  • 보호
    • 자원 접근 통제
    • 권한 설

      Linkers and Loaders

      소스 코드는 객체 파일로 컴파일되며, 메모리 위치에 올리 수 있도록 설계됨 -> 이를 이동 가능한 객체 파일이라고 함

  • Linkers
    • 이런 객체 파일들을 하나의 실행 파일로 결합함
    • 이 과정에서 라이브러리들도 함께 포함됨
  • Loader
    • 메모리에 프로그램을 불러옴
    • relocation은 프로그램 내 코드와 데이터를 최종 주소 로 조정하는 작업 현대 일반 목적 시스템에서는 라이브러리를 실행 파일에 직접 연결 하지 않음 -> 대신에 동적 연결 라이브러리를 사용함 (필요할때 불러오고, 동일 버전 공유함)

운영체제의 구조

  1. 간단한 구조 (MS-DOS)
  2. 좀 더 복잡한 구조 (UNIX)
  3. Layerd - an abstraction
  4. Micokernel
    • mac 에서 사용하는 방식
    • 장점 : 쉬운 확장, 새로운 구조에 쉬운 적용, 더 안전, 더 신뢰가 높음
    • 단점 : 사용자 공간과 커널 공간의 통신이 많아서 overhead 가 있ㄱ음
This post is licensed under CC BY 4.0 by the author.