운영체제와 컴퓨터

imeline·2023년 12월 18일

운영체제

  • 컴퓨터 시스템의 핵심 소프트웨어로, 컴퓨터 하드웨어와 응용 프로그램(스프트웨어) 간의 상호작용을 관리하고 제어하는 역할
  • 목적 : 인터페이스를 제공해 효율적으로 응용 프로그램이 동작하도록 지원하고, 시스템 자원을 효율적으로 관리하여 응용 프로그램이 원활하게 동작할 수 있도록 한다.
  • 역할
    1) 자원 관리 : CPU(중앙처리장치), 메모리(Memory), 저장장치(Storage), 입출력 장치(I/O Device) 등 하드웨어의 자원을 할당하고 관리하여 여러 응용 프로그램이 동시에 실행될 수 있도록 한다.
    2) 메모리 관리 : 응용 프로그램이 필요로하는 메모리 공간을 할당한다.
    - 메모리의 할당과 해제, 가상 메모리 관리 등을 포함
    3) 프로세스 관리 : 실행 중인 응용 프로그램인 프로세스(Process)를 관리
    - 프로세스의 생성, 실행, 일시 정지, 시스템 중지 등의 작업을 제어하며, 여러 프로세스 간의 자원 공유와 협력을 관리
    4) 디스크 및 파일 시스템 관리 : 파일의 생성, 삭제, 복사, 이동 등의 작업을 처리
    5) 입출력 관리 : 사용자와 응용 프로그램이 키보드, 마우스, 디스플레이, 프린터 등과의 통신을 할 수 있도록 지원하며, 입출력 장치의 성능을 최적화
    6) 사용자 인터페이스 : 사용자와 컴퓨터 간의 상호작용을 지원하는 사용자 인터페이스를 제공
    - CLI, GUI를 통해 사용자가 컴퓨터를 조작할 수 있도록 한다.
    7) 네트워킹 : 컴퓨터 네트워크를 관리하고, 네트워크 프로토콜을 지원하여 컴퓨터 간의 통신을 가능하게 한다.
    - 인터넷 연결, 데이터 전송, 네트워크 보안 등을 관리
    8) 오류 처리 : 프로세스의 비정상 종료, 메모리 오버플로우, 입출력 오류 등을 감지하고 처리하여 시스템의 안정성과 신뢰성을 유지한다.
    9) 시스템 보안 : 시스템의 보안을 유지하기 위해 접근 제어, 사용자 인증, 암호화 등의 기능을 제공
  • 종류 : 윈도우, macOS, 리눅스, 유닉스

CPU

  • Central Processing Unit(중앙 처리 장치)
  • 프로그램의 명령어를 해석하여 데이터를 연산/처리를 하는 부분, 혹은 그 기능을 내장한 칩을 말한다.
  • 하드웨어

컴퓨터는 하드웨어와 소프트웨어를 관리하는 운영체제, CPU, 메모리 등으로 이루어짐

운영체제의 역할과 구조

운영체제의 역할

1) CPU 스케줄링과 프로세스 관리 : CPU 소유권을 프로세스에 할당, 프로세스 생생과 삭제, 자원 할당 및 반환을 관리

  • 자원이란? 하드웨어 자원과 소프트웨어 자원

2) 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지 관리

3) 디스크 파일 관리 : 디스크 파일을 어떤 방법으로 보관할지 관리

4) I/O 디바이스 관리 : 마우스, 키보드와 컴퓨터 간의 데이터를 주고받는 것 관리

운영체제의 구조

  • GUI : 사용자가 전자장치와 상호작용할 수 있도록 하는 사용자 인터페이스. 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 단순한 동작으로 컴퓨터와 상호 작용할 수 있게 한다.

  • CUI : 그래픽이 아닌 명령어로 처리하는 인터페이스

    • ex) 리눅스 데스크탑이 아닌 리눅스 서버 - GUI 없고 CUI만 있음
  • 드라이버 : 운영 체제와 장치의 상호 통신을 허용하는 소프트웨어 구성 요소

    • 장치구동 프로그램
    • 드라이버에는 운영 체제가 장치와 소통할 수 있는 방법을 뜻하는 함수가 있음
    • 하드웨어를 제어하기 위한 소프트웨어
  • 시스템콜

    • 운영체제가 커널에 접근하기 위한 인터페이스

    • 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수 호출 시 사용

    • 유저 프로그램이 I/O 요청으로 트랩을 발동하면 올바른 I/O 요청인지 확인 후, 유저 모드가 시스템콜을 통해 커널 모드로 변환되어 실행

      • I/O 요청 : 입출력 함수, 데이터베이스, 네트워크, 파일 접근 등에 관한 일
      • 트랩 : 소프트웨어 인터럽트 - 인터럽트 : 프로세스 실행 도중 예기치 않은 상황이 발생할 때, 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다
    • 예를 들어, I/O 요청인 fs.readFile() 함수 발동 시

      -> 유저 모드에서 파일 읽지 x, 커널 모드로 들어가 파일을 읽고
      -> 다시 유저 모드로 돌아가 -> 그 뒤의 유저 프로그램의 로직 수행
      => 이 과정을 통해, 컴퓨터 자원에 대한 직접 접근 차단, 다른 프로그램으로부터 프로그램 보호

컴퓨터의 요소


CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어짐

CPU

  • 산술논리연산장치, 제어장치, 레지스터로 구성된 컴퓨터 장치
  • 단순히 메모리에 존재하는 명령어를 해석해서 실행
  • CPU 내 장치들

1) 제어장치

  • 프로세스 조작을 지시
  • 입출력장치 간 통신 제어
  • 명령어들을 읽고 해석하며 데이터를 처리하는 순서를 결정

2) 레지스터

  • 매우 빠른 임시기억 장치
  • CPU와 직접 연결되어 있어, 연산 속도가 메모리보다 수백 배 빠름
  • CPU는 자체적으로 데이터 저장 방법이 없어, 레지스터를 거쳐 데이터 전달

산술논리연산장치

  • 덧셈 같은 두 숫자의 산술 연산과 논리합 같은 논리 연산을 계산하는 디지털 회로

CPU에서 제어장치, 레지스터, 산술논리연산장치를 통한 연산 처리

인터럽트

  • 어떤 신호가 들어왔을 때, CPU를 잠깐 정지시키는 것
  • IO(키보드, 마우스)로 인한 인터럽트, 0으로 나누기 등 산술연산 인터럽트, 프로세스 오류 등으로 발생
  • 인터럽트 발생 시, 인터럽트 벡터로 가서 그 내의 인터럽트 핸들러 함수 중 하나가 실행
    • 인터럽트 핸들러 함수 : 인터럽트 발생 시 이를 핸들링하기 위한 함수. 커널 내부의 IRQ로 호출
  • 인터럽트 간의 우선 순위가 있고, 그것에 따라 실행
  • 하드웨어, 소프트웨어로 나뉨

1) 하드웨어 인터럽트

  • IO 디바이스에서 발생
  • 인터럽트 라인 설계 후, 순차적 인터럽트 실행 중지, 운영체제에 시스템콜 요청, 원하는 디바이스로 향해, 디바이스의 작은 로컬 버퍼에 접근하여 일 수행

2) 소트트웨어 인터럽트

  • 트랩이라고 함
  • 프로세스 오류 등으로 프로세스가 시스템콜 호출 시 발동

DMA 컨트롤러

  • I/O 디바이스가 메모리에 직접 접근할 수 있게 하는 하드웨어 장치
  • CPU의 일을 부담하는 보조로, CPU의 부하를 막는다.
  • 하나의 작업을 CPU와 DMA 컨트롤러가 동시에 하는 것을 방지

메모리

  • 전자회로에서 데이터나 상태, 명령어 등을 기록하는 장치
  • 보통 RAM을 말한다.
  • ex) 공장에서 cpu는 일꾼, 메모리는 작업장
  • 메모리가 클수록 많은 일을 동시에 할 수 있음 (많은 작업을 가져다 놓고 일할 수 있으니까)

타이머

  • 특정 프로그램에 시간 제한을 다는 역할 (몇 초 안에 이 작업이 끝나야 한다)
  • 시간이 많이 걸리는 프로그램이 작동할 때 제한을 걸기 위해서 존재

디바이스 컨트롤러

  • 컴퓨터와 연결되어 잇는 IO 디바이스들의 작은 CPU

0개의 댓글