ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [운영체제] OS의 구조
    개발/OS 2022. 2. 18. 02:06

    OS의 구조

    이번에는 OS의 구조에 대해서 알아보자

    지난 글에서 본 OS의 기능들을 보면 결국 OS는 사용자가 프로그램을 실행할때 적절한 환경을 제공해주는 것이다.

    따라서 일반적인 OS들(Windows, Mac, Android 등)은 사용자가 더 쉽고 편한 환경에서 기기를 사용하도록 인터페이스를 제공한다. 이를 User Interface(UI)라 한다. UI에는 CLI, GUI, touch-screen등이 있다.

     

    Command Line Interface, CLI

    명령어를 통해 프로그램을 실행하고 조작한다.

    파일을 만들거나, 이동하거나.. 등등을 모두 명령어로 조작할 수 있다.

    Windows에는 cmd나 Powershell이 있고

    Linux나 Mac에서는 Terminal이 대표적인 예라고 볼 수 있다.

     

    Graphic User Interface

    대부분의 사람들이 아는 그것, 프로그램 아이콘을 마우스로 클릭하여 실행하는 것을 GUI라 한다.

    CLI보다 훨씬 직관적이고 사용하기 쉽기 때문에 많이 사용된다.

     

    Touchscreen Interface

    요즘에는 모바일기기가 터치 스크린도 이해가 쉬울 것이다.

    마우스대신에 터치를 사용한다.

     

    System Call

    OS는 사용자가 쉽게 사용하는 사용자모드와 자원을 직접 조작하는 커널모드가 있다.

    커널모드를 직접 조작하면 위험하므로 대부분 사용자 모드에서 자원을 조작하게 되는데, 이때 사용자 모드와 커널모드 사이에서 명령을 전달하는 것이 시스템 콜이다.

     

    시스템 콜은 여러개가 있으며 각각 번호가 지정되어 있다.

    시스템 콜 인터페이스에서는 이 번호들을 통해 각각의 시스템 콜을 인덱싱할 수 있고, 각 시스템 콜에 사용자 명령을 전달하고, 결과를 가져온다. 따라서 사용자 프로그램은 시스템 콜이 어떤일을 하는지 알 필요 없다.

    유저 어플리케이션이 open() 명령어를 전달하면, 시스템 콜 인터페이스가 i번째 시스템콜에게 명령어를 전달하고, 결과를 받아서 다시 반환해준다.

     

    그러나 단지 명령어만 주고 결과를 받는것보다 더 많은 정보를 주고받아야할 때가 있을 수 있다. 

    이 때는 OS에 정보(파라미터)를 전달해주어야 하는데 보편적으로 세가지 방법을 사용한다.

    • 레지스터에 파라미터를 전달. -> 파라미터가 레지스터보다 큰 경우에는 불가능
    • 파라미터를 메모리에 저장하고 이 주소를 레지스터에 전달. -> Linux나 Solaris가 사용한다고 함
    • 프로그램이 파라미터를 스택에 저장하고, OS가 이를 하나씩 꺼내어 쓴다.

     

    시스템 콜의 종류

    시스템 콜은 크게 6가지 종류가 있다.

     

    Process Control

    • 프로세스를 만들고 종료
    • 프로세스의 실행(execute), 적재(load), 중지(abort), 종료(end)
    • 프로세스 속성을 가져오고 설정
    • 시간이나 사건에 대해서 대기
    • 메모리 할당과 해제
    • 오류가 있는 메모리 Dump
    • Debugger
    • 프로세스간 공유된 데이터에 대한 접근 Lock

     

    File management

    • 파일 생성, 삭제, 열기, 닫기, 읽기, 쓰기, 이동
    • 파일 속성을 가져오고 설정

     

    Device management

    • 장치 요청, 해제
    • 읽기, 쓰기, 이동
    • 장치 속성을 가져오고 설정
    • 장치의 논리적인 부착과 해체

     

    Information maintenance

    • 날짜, 시간을 가져오거나 설정
    • 시스템 데이터를 가져오거나 설정
    • 프로세스, 파일, 장치 속성을 가져오거나 설정

     

    Communications

    • 통신 연결을 생성하거나 삭제
    • 메세지 송신, 수신
    • 공유된 메모리를 생성하거나, 접근
    • 원격장치의 부착과 해제

     

    Protection

    • 자원에 대한 접근 관리
    • 권한 관리

     

    Windows와 Unix환경에서 시스템콜을 호출하기위한 함수 예시이다. 지금 보니 윈도우 함수 이름이 굉장히 직관적이므로 설명이라고 생각해도 되겠다..

     

    이처럼 운영체제가 다르면 시스템콜의 함수 이름부터 다른데, 이름만 다른게 아니라 파일 포맷, 시스템 콜 체계 등이 다르기 때문에 Windows의 프로그램을 Mac환경에서 실행시킬수 없을 뿐만 아니라 이식도 쉽지 않다.

    다양한 OS에서 사용될 수 있는 앱들은 다음과 같은데

    • Python이나 Ruby같은 Interpreted언어로 작성되었으며, 다양한 OS에서 사용가능한 Interpreter가 있는 경우
    • JVM과 같이 독자적인 VM컨테이너가 있는 언어로 작성된 경우
    • C와 같은 기본언어로 작성되었으며 각각의 OS에서 컴파일된 경우

     

    이렇게 OS에 따라서 시스템의 내부구조가 크게 달라질 수 있기 때문에

    하드웨어의 사양과 특성에 맞게 OS의 목적을 정하고 디자인하고 구현해야 한다.

    '개발 > OS' 카테고리의 다른 글

    [운영체제] 스레드  (0) 2022.04.12
    [운영체제] 프로세스  (0) 2022.04.11
    [운영체제] OS의 구조(2)  (0) 2022.02.21
    [운영체제] 운영체제란?  (0) 2022.02.17

    댓글

Designed by Tistory.