[운영체제] 컴퓨터 시스템 계층 구조

2024. 9. 30. 19:39·CS/OS

컴퓨터 시스템이 계층 구조로 설계된 이유?

-계층 간의 독립성 확보를 위해(추상화)

  ‣ 사용자 : OS나 하드웨어에 대한 지식이 없어도 응용 프로그램으로 컴퓨터 활용 가능

  ‣ 응용 프로그램 개발자 또는 응용 프로그램

     : 장치 타입이나 구조, 제어 방법을 몰라도 개발 가능

       컴퓨터 하드웨어가 바뀌어도 응용프로그램 다시 작성할 필요 없음

‣ 운영체제

      : 장치 관련된 모든 작업을 디바이스 드라이버에게 요청

       응용프로그램과 하드웨어 사이 인터페이스 역할

 

사용자에 대한 운영체제의 역할

- 사용자가 하드웨어에 관한 지식이 없어도 컴퓨터를 다루기 용이하게 함

- 사용자에게 컴퓨터 시스템을 사용할 편리한 인터페이스 제공

- 컴퓨터의 사용을 돕는 여러 도구 응용프로그램(유틸리티) 제공

    >> Windows의 파일탐색기와 작업관리자, 리눅스의 쉘

- 사용자 계정 관리

- 사용자의 컴퓨터 사용 시간 계산

 

응용프로그램에 대한 운영체제 역할

- 응용 프로그램이 직접 하드웨어 다루지 못하도록 차단

    >> 응용 프로그램들 간 하드웨어 사용 충돌 막기 위해

- 응용프로그램이 하드웨어 사용하고자 할 때

    >> 반드시 운영체제에게 요청 (System call)

- 응용프로그램과 하드웨어 사이 인터페이스 (하드웨어 추상화)

 

하드웨어에 대한 운영체제의 역할

- 하드웨어 자원 사용에 대한 충돌 해결 및 성능 최적화

- 하드웨어 자원 접근

  -   응용프로그램에서 printf(“hello”) → 디스플레이 장치에 “hello”를 출력하는 일은 운영체제가 함

   -   응용프로그램에서 scanf()  →  키보드로부터 문자를 입력 받는 일은 운영체제가 함

 

• 운영체제와 커널

운영체제 소프트웨어 구성 : 유틸리티/GUI SW, 라이브러리, 커널, 디바이스 드라이버

 

 

유틸리티 소프트웨어

사용자가 컴퓨터를 편리하게 사용, 관리할 수 있도록 설계된 프로그램

ex) 쉘, 탐색기, 명령창, 작업 관리자 등

 

라이브러리 소프트웨어

특정 부분 기능만 수행하도록 미리 작성되어진 프로그램 모음

 

① 표준 라이브러리

- 응용 프로그램에서 자주 활용되는 기능으로 커널의 기능과 일차적으로 무관한 작업을 수행하는 프로그램 모음

- 시스템 호출 함수를 래핑함

 

② 시스템 호출 라이브러리

- 응용프로그램이 커널 코드를 불러 활용할 수 있도록 제공하는 프로그램 모음

- 하드웨어 직접 호출

 


 

커널

- 운영체제의 핵심 기능을 구현한 부분, 좁은 의미의 운영체제

- 부팅 후 메모리에 상주하는 코드와 데이터

- CPU, 메모리 등 컴퓨터 자원을 직접 제어하고 관리하는 코드와 자료 구조들

- 커널 코드는 함수들의 집합

- 커널 기능을 이용하려면 응용프로그램은 반드시 시스템 호출(system call) 사용

 

디바이스 드라이버

- 장치를 직접 제어하고 입출력하는 프로그램

- 장치마다 전담 디바이스 드라이버가 있음

- 일반적으로 장치 제작자에 의해 작성되어 배포됨

- ex) 키보드 드라이버, 디스크 드라이버, SCSI 드라이버, 마우스 드라이버, 그래픽 드라이버, 네트워크 드라이버, USB 드라이버 등

 

• 커널 인터페이스

커널이 제공하는 2개의 인터페이스 존재

 

① 시스템 호출

커널과 응용프로그램 사이 중계 역할

응용 프로그램에서 커널 기능을 사용할 수 있는 유일한 방법

시스템 호출 라이브러리 통해 다양한 시스템 호출 함수 제공

- read()함수에 의해 시스템 호출이 일어나는 과정

 

② 인터럽트

- 커널과 하드웨어 사이 중계 역할

- 장치들이 입출력 완료, 타이머 완료 등을 CPU에게 알리는 하드웨어적 방법

   >> 인터럽트를 알리는 하드웨어 신호가 직접 CPU에게 전달

- 인터럽트 발생 시

    CPU는 하는 일 중단하고 인터럽트 서비스 루틴(ISR) 수행

    ISR은 대부분 디바이스 드라이버 내에 존재

    ISR은 커널 영역에 적재

    ISR의 수행을 마치면 하던 작업 계속

-인터럽트 활용

운영체제가 장치에게 지시한 입출력 작업의 완료, 예고 없는 네트워크 데이터의 도착, 키보드나 마우스의 입력, 부족한 배터리 경고 등 장치와 관련된 모든 이벤트 처리

 

 


 

 

참고문헌

 

'CS > OS' 카테고리의 다른 글

[Linux] 리눅스 사용자 권한과 chmod 명령어  (0) 2025.03.09
[운영체제] 가상 메모리  (1) 2024.12.15
[운영체제] 스레드 동기화  (0) 2024.12.07
'CS/OS' 카테고리의 다른 글
  • [Linux] 리눅스 사용자 권한과 chmod 명령어
  • [운영체제] 가상 메모리
  • [운영체제] 스레드 동기화
seulll
seulll
개인 공부 / 정리 블로그입니다
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (338) N
      • 코딩테스트 (230) N
        • programmers (python) (156)
        • 백준 (python) (72) N
      • 자료구조 | 알고리즘 (14)
      • 개발 | 프로젝트 (43)
        • Python (4)
        • Java | Spring (7)
        • Android (5)
        • Unity (3)
        • API (4)
      • CS (15)
        • Network (5)
        • SQL (2)
        • OS (4)
      • 데이터 분석 (14)
      • 기타 (13)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    웹크롤링
    confusion matrix
    오블완
    train_test_split
    백엔드 개발자
    API
    파이썬
    2 x n 타일링
    kakao map api
    바다코끼리
    카카오맵 api
    대입 표현식
    데이터분석
    프로그래머스
    코딩테스트
    그리디 알고리즘
    asterisk
    모델 성능 평가
    티스토리챌린지
    백엔드
    카카오맵
    solving environment
    Greedy
    백엔드 개발자 역량
    Python
    프렌즈4블록
    오차행렬
    야근 지수
    Boxplot
    박스플롯
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
[운영체제] 컴퓨터 시스템 계층 구조
상단으로

티스토리툴바