Week1 OS & How Computer Systems Work

운영체제 개요 & 컴퓨터 시스템 동작원리

운영체제는 뭐고, 뭘 하나요?

  • 컴퓨터 하드웨어와 사용자 간의 중간 계층 역할을 하는 소프트웨어

  • 컴퓨터 자원을 효율적으로 관리하고 제어

  • CPU 스케줄링, 파일 시스템 관리, IO 제어 등

시분할 시스템이 뭔가요?

  • 여러 사용자나 프로그램이 CPU 자원을 공유하여 동시에 실행되는 것처럼 보이게 하는 멀티태스킹 환경

  • 각 작업이 고정된 시간 단위를 할당받아 교대로 실행되는 방식

  • 키워드: 멀티태스킹, 컨텍스트 스위칭, CPU 스케줄링 알고리즘

다중 프로그래밍 시스템에 대해서 설명해주세요

  • 메모리에 여러 프로그램을 동시에 적재하여 CPU 자원을 최대한 효율적으로 사용하는 방식

  • 목적은 CPU가 항상 바쁘게 동작하도록 하여 유휴 시간을 줄이는 것

  • 여러 작업을 번갈아가면서 처리(컨텍스트 스위칭, CPU 스케줄링, 페이징, 동기화)

대화형 시스템에 대해 설명해주세요

  • 사용자와 컴퓨터 간의 즉각적인 상호작용을 가능하게 하는 시스템

  • 지연없이 실시간으로 작업이 이루어지도록하여 사용자는 프로그램을 더 직관적으로 제어 가능

  • 즉시 응답

  • 연속적인 상호작용: 연속적으로 명령을 내리거나 데이터 입력 가능

  • 사용자 친화적: GUI (Graphic User Interface)

  • 실시간 처리

다중 처리기 시스템

  • 두개 이상 CPU가 하나의 컴퓨터 시스템에 물리적으로 존재하는 시스템

  • 멀티 코어 시스템과 다르지만, 다중 처리기는 멀티 코어 시스템을 포함하는 개념

  • 동시에 작동하여 여러 작업을 병렬로 처리하는 시스템

  • 여러 프로세스가 협력하여 이를 동시에 처리하여 성능과 속도를 향상

  • 병렬 처리

  • 공유 메모리: 각 프로세서는 공통의 메모리 영역을 사용하여 데이터를 읽고 씁니다.

  • 확장성: 추가 CPU 장착

  • 고가용성: 다른 CPU가 이어서 작업

  • 계층: CPU안에 코어가 여러개 있고, 각 코어는 각 프로세스를 담당하며, 각 프로세스내에서는 각 스레드가 존재

시스템 콜에 대해 설명해주세요

  • 사용자 프로그램이 운영체제의 커널에 있는 기능을 요청할 때 사용하는 인터페이스

  • 운영체제와 사용자 프로그램 사이의 안전한 인터페이스를 제공. 자원의 직접적인 접근 제한.

  • 파일 시스템 접근, 메모리 할당, 프로세스 생성 등 시스템 자원에 직접 접근을 할 수 없습니다.

  • 시스템 콜을 통해 운영체제의 커널모드로 전환되어 이러한 작업을 처리합니다.

시스템 콜은 사용자 프로그램이 운영체제의 커널 기능을 요청할 때 사용하는 인터페이스로, 운영체제가 하드웨어 자원을 안전하고 효율적으로 제어할 수 있도록 합니다. 이를 통해 사용자 프로그램은 시스템 자원을 사용할 수 있으며, 시스템의 안정성을 유지할 수 있습니다.

커널에 대해 설명해주세요

  • 운영체제의 핵심 구성 요소로, 컴퓨터 시스템의 하드웨어 자원(CPU, 메모리, 디스크 등)을 관리합니다.

  • 프로세스와 사용자 프로그램 간의 상호작용을 제어하는 역할을 합니다.

  • 시스템 자원을 효율적으로 관리하고 CPU 스케줄링을 수행합니다.

  • 커널은 안정성과 보안을 유지하며, 하드웨어 자원에 직접 접근하는 커널 모드에서 동작합니다.

커널 모드에 대해 설명해주세요

  • 운영체제에서 하드웨어 자원에 직접 접근할 수 있는 최고 권한의 실행 모드

  • 커널 모드에서는 CPU가 모든 메모리 주소에 접근할 수 있고, 하드웨어 장치나 시스템 자원을 제어할 수 있는 모든 명령어를 실행할 수 있습니다.

  • 프로그램이 파일 시스템에 접근하거나, 네트워크 통신 또는 메모리 할당과 같은 작업을 할 때는 **시스템 콜(System Call)**을 통해 커널 모드로 전환

  • 컨텍스트 스위칭이 발생하여 CPU는 유저 모드에서 커널 모드로 전환되며, 커널이 해당 요청을 처리한 후 다시 유저 모드로 복귀

커널 모드는 운영체제가 시스템 자원에 직접 접근할 수 있는 모드로, CPU가 모든 명령어와 메모리 영역에 대한 권한을 가지고 실행됩니다. 유저 모드에서 실행되는 응용 프로그램이 시스템 자원에 접근해야 할 때, 시스템 콜을 통해 커널 모드로 전환되어 안전하게 자원에 접근할 수 있습니다.

유저 모드에 대해 설명해주세요

  • 응용 프로그램이 제한된 권한으로 실행되는 모드

  • 시스템 자원에 대한 직접적인 접근 불가

  • 프로그램은 하드웨어 자원이나 다른 프로세스의 메모리에 접근할 수 없습니다.

유저 모드는 응용 프로그램이 안전하게 실행될 수 있도록 제한된 권한을 가지며, 시스템 자원에 직접 접근하지 못하는 실행 환경입니다. 필요할 때는 시스템 콜을 통해 커널 모드로 전환하여 하드웨어 자원에 접근한 후 다시 유저 모드로 돌아옵니다.

폴링에 대해 설명해주세요

  • CPU가 주기적으로 특정 장치나 작업의 상태 변화를 확인하는 방식.

  • 상태 변화를 게속해서 확인해야 하기때문에 불필요한 CPU 자원을 소모

  • 이를 보완하기 위해 인터럽트가 사용됩니다.

인터럽트에 대해 설명해주세요

  • 외부 또는 내부의 특정 이벤트가 발생했을때, 현재 CPU가 수행중인 작업을 일시 중단하고, 해당 이벤트를 우선적으로 처리하는 시스템 메커니즘.

  • 인터럽트 발생시, CPU는 컨텍스트 스위칭이 발생. 컨텍스트를 저장하고 인터럽트 처리 루틴(인터럽트 핸들러)을 실행하여 해당 이벤트를 처리합니다.

  • 각 인터럽트는 고유한 벡터 번호를 갖고 있고, 해당 번호를 인터럽트 벡터 테이블에서 찾아서 맞는 처리 루딘으로 연결됩니다.

  • 인터럽트 벡터 테이블은 운영체제/하드웨어가 관리하며 미리 정의되어 있는 함수입니다.

DMA(Direct Memory Access)에 대해 설명해주세요

  • 입출력 장치(IO장치)가 CPU의 개입 없이 메모리에 직접 데이터를 읽거나 쓸 수 있게 해주는 데이터 전송 방식.

  • CPU부하 감소: CPU를 거치치 않고 장치와 메모리 간에 데이터를 주고 받을 수 있게 하는 기법

  • 빠른 데이터 전송: CPU가 일일이 처리하지 않습니다.

DMA(Direct Memory Access)는 CPU 없이 장치가 메모리로 직접 데이터를 주고받을 수 있는 방식으로, CPU의 부하를 줄이고 데이터 전송을 효율적으로 처리하는 데 사용됩니다. 이를 통해 시스템의 성능이 향상되고, 특히 대용량 데이터 전송에서 효과적입니다.

동기식 I/O가 뭔가요?

  • 입출력 작업이 완료될 때까지 프로그램이 기다리는 방식입니다. (블로킹 상태)

  • CPU는 대기상태로 변하여 자원을 비효율적으로 사용하게 됩니다.

비동기식 I/O가 뭔가요?

  • I/O 작업을 요청한 프로그램은 I/O 작업이 끝날 때까지 기다리지 않고 다른 작업을 계속 수행(논블로킹)

  • 프로그램이 I/O 작업을 요청하면, 즉시 제어권을 반환받아 다른 작업을 계속 실행

  • I/O 작업이 백그라운드에서 진행되고, 작업이 완료되면 인터럽트 또는 콜백을 통해 프로그램에 작업이 완료되었음을 알립니다.

  • CPU 자원을 효율적으로 사용하며, 멀티태스킹에 유리합니다.

  • 단점으로는 논블로킹 방식이기때문에 프로그램 흐름이 복잡해집니다. I/O 작업 완료 후에 작업을 콜백 함수나 이벤트 핸들러로 처리해야하기 떄문입니다.

Last updated