Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

엘라의 개발 스케치 Note

[JSCODE 운영체제 스터디 - 1주차] 운영체제 개요 & 컴퓨터 시스템 동작원리 본문

CS/운영체제

[JSCODE 운영체제 스터디 - 1주차] 운영체제 개요 & 컴퓨터 시스템 동작원리

엘라랑이 2023. 11. 8. 22:53

# 운영체제

더보기

? 운영체제(Operating System, OS)

- 컴퓨터 시스템의 핵심 소프트웨어(구성 요소)
- 하드웨어 자원을 효율적으로 관리하고 컴퓨터 사용자 및 응용 프로그램에게 인터페이스를 제공하는 시스템 소프트웨어
- 사용자와 응용 프로그램에게 편의성과 안정성 제공
- 다양한 운영체제가 존재하며, 각 운영체제는 특정 용도 및 환경에 맞게 설계되어 있음

! 운영 체제의 주요 역할

  • 자원 관리(Resource Management)
    • 하드웨어 자원(중앙 처리 장치, 메모리, 디스크 공간, 네트워크 인터페이스 등)을 관리
    • 자원 할당, 사용, 반환, 추적을 포함
  • 프로세스 관리(Process Management)
    • 프로세스는 실행중인 프로그램의 인스턴스를 나타냄
    • 운영체제는 프로세스의 생성, 스케줄링, 종료, 통신을 관리
  • 메모리 관리(Memory Management)
    • 운영체제는 메모리 자원을 관리하여 프로세스에 필요한 메모리를 할당하고 해제
    • 이로 인해 메모리 단편화 문제를 관리하고 가상 메모리 기능을 제공할 수 있음
  • 파일 시스템 관리(File System Management)
    • 파일 및 디렉토리를 생성, 읽기, 쓰기, 삭제하고 파일 시스템의 구조를 관리
    • 이로써 데이터의 영구 저장 및 조직이 가능해짐
  • 입출력(I/O)관리(Input/Output Management)
    • 입력과 출력 장치(디스크, 네트워크, 키보드, 모니터 등)와의 상호 작용을 관리
    • 데이터를 읽고 쓰는 작업을 조정
  • 시스템 보안 및 권한 관리(System Security and Authorization)
    • 운영체제는 시스템 및 데이터의 보안을 유지하며, 사용자 및 프로세스의 권한을 관리
    • 이로써 불법 접근 및 데이터 손상을 방지
  • 네트워킹 및 통신(Networking and Communication)
    • 운영체제는 네트워크 자원과 통신을 관리
    • 다른 컴퓨터나 장치와의 상호 작용을 지원
  • 오류 처리 및 예외 관리(Error Handling and Exception Management)
    • 시스템 오류 및 예외 상황에 대한 처리를 담당하며 안정성을 유지

# 시분할 시스템

더보기

? 시분할 시스템(Time-Sharing System)

- 다중 사용자 환경에서 컴퓨터 자원을 공유하고 사용자 간에 시간을 나눠 공평하게 할당하는 운영체제
-> 다중 사용자 환경에서 효율적으로 작동하며, 사용자들이 동시에 컴퓨터를 공유하고 서로 다른 작업을 수행할 수 있게 함
- EX) UNIX, Linux

! 시분할 시스템의 특징

  • 다중 사용자 지원
    • 시분할 시스템은 여러 사용자가 동시에 컴퓨터를 사용할 수 있도록 함
    • 각 사용자는 자신만의 작업환경과 프로세스를 가질 수 있음
  • 시분할(Time-Sharing)
    • 시스템은 시간을 작은 단위로 나누어 각 사용자에게 할당
    • 각 사용자는 자원을 번갈아가며 사용
    • 이로써 여러 작업이 동시에 실행되는 것처럼 보임
  • 인터랙티브 작업
    • 시분할 시스템은 주로 인터랙티브 작업에 적합
    • 사용자가 키보드나 마우스를 통해 명령을 내릴 때 빠른 응답이 필요한 환경에서 효과적
  • 자원 공유
    • 다중 사용자 간에 CPU, 메모리, 입출력 장치 등의 자원을 공유
    • 이를 효율적으로 관리하기 위해 스케줄링 알고리즘 사용
  • 멀티태스킹
    • 시분할 시스템은 멀티태스킹을 지원하여 여러 응용 프로그램을 동시에 실행 가능
    • 각 작업은 작은 시간 슬롯 안에서 번갈아 가며 실행됨
  • 빠른 응답 시간
    • 시분할 시스템은 사용자에게 빠른 응답시간을 제공
    • 사용자가 대기 없이 작업을 수행할 수 있도록 함
  • 시스템 안정성
    • 시분할 시스템은 여러 사용자 및 작업을 동시에 다루기 때문에 안정성이 중요
    • 프로세스 간에 간섭이 없도록 보장
    • 장애 발생 시 시스템을 복구할 수 있어야 함
  • 빠른 스위칭
    • 시분할 시스템은 프로세스 간의 빠른 스위칭을 통해 사용자 간의 경쟁적인 자원 점유를 관리

# 다중 프로그래밍 시스템

더보기

? 다중 프로그래밍 시스템(multi-programming system)

- 컴퓨터에서 여러 프로그램이 동시에 실행될 수 있도록 하는 운영체제 환경
- 효율적인 자원 활용을 지원
- 일반적으로 개인 컴퓨터, 서버, 슈퍼 컴퓨터와 같은 다양한 컴퓨터 시스템에서 사용됨
- 자원 활용과 성능을 최적화하는 데 중요한 역할

! 다중 프로그래밍 시스템의 특징

  • 동시 실행
    • 다중 프로그래밍은 여러 프로그램을 동시에 메모리에 적재하고 실행할 수 있음
    • 이로 인해 CPU, 메모리, 입출력 장치 등의 자원이 최대한 활용됨
  • 프로세스 스케줄링
    • 운영체제는 여러 프로세스 간의 실행을 관리
    • 스케줄링 알고리즘을 사용하여 어떤 프로세스가 CPU를 사용할지 결정
  • 대기 시간 최소화
    • 다중 프로그래밍은 CPU와 다른 자원의 대기 시간을 최소화하여 시스템의 처리량을 향상
    • CPU가 한 프로세스의 입출력 작업이 완료될 때까지 대기하지 않고 다른 프로세스로 전환
  • 오류 격리
    • 하나의 프로세스에서 발생한 오류나 충돌이 다른 프로세스에 영향을 미치지 않도록 격리
    • 시스템의 안정성을 유지
  • 멀티태스킹
    • 다중 프로그래밍은 멀티태스킹을 지원하므로 여러 작업을 동시에 실행 가능
    • 사용자는 프로그램 간에 빠르게 전환할 수 있어 효율적으로 작업을 수행할 수 있음
  • 시간 공유
    • CPU 시간을 여러 프로세스 사이에 공유
    • 각 프로세스가 공평하게 실행될 수 있도록 함

# 대화형 시스템

더보기

? 대화형 시스템(Interactive System)

- 사용자와 컴퓨터 간의 상호작용을 중심으로 동작하는 컴퓨터 시스템
- 사용자가 입력을 제공하고 컴퓨터는 실시간으로 반응하며 사용자의 요구를 충족시킴
- 일상적인 컴퓨터 사용 환경에서 사용됨
- 사용자와의 원활한 상호작용을 통해 다양한 작업을 수행할 수 있도록 함

! 대화형 시스템의 특징

  • 실시간 응답
    • 대화형 시스템은 사용자의 입력에 빠르게 응답
    • 사용자와 컴퓨터 간의 상호작용이 끊임없이 발생
    • 이로써 사용자는 즉각적인 피드백을 받을 수 있음
  • 사용자 인터페이스
    • 사용자 인터페이스를 통해 사용자와 컴퓨터 간의 상호작용을 중개
    • 사용자는 키보드, 마우스, 터치 스크린 등을 사용하여 명령을 입력하고 시스템의 출력을 받음
  • 응용 분야
    • 대화영 시스템은 다양한 응용 분야에서 사용됨
    • EX) 운영체제, 그래픽 디자인 소프트웨어, 웹 브라우저, 게임, 음성 인식 시스템, 가상 비서 등
  • 사용자 중심 설계
    • 사용자의 편의성을 고려하여 설계됨
    • 사용자 경험을 향상시키기 위한 요구사항에 중점을 둠
  • 대화 형태
    • 사용자는 시스템과 대화하는 형태로 명령을 내릴 수 있음
    • 시스템은 이러한 명령을 처리하고 결과를 피드백

# 다중 처리기 시스템

더보기

? 다중 처리기 시스템(Multi-Processor System)

- 두 개 이상의 중앙 처리 장치(CPU)가 하나의 컴퓨터 시스템에서 동작하는 시스템
- 병렬 처리를 통해 높은 성능, 처리량 및 작업 효율성을 제공
- 고성능 컴퓨팅, 데이터베이스 서버, 웹 서버, 과학 연구 등 다양한 분야에서 사용

! 다중 처리기 시스템의 특징

  • 다중 CPU
    • 시스템에는 두 개 이상의 CPU코어가 포함됨
    • 이들은 독립적으로 작업하거나 협력하여 작업을 수행
  • 병럴 처리
    • 다중 처리기 시스템은 여러 작업을 동시에 처리할 수 있음
    • 병렬 처리를 통해 빠른 응답 시간과 높은 처리량을 제공
  • 작업 분배
    • 시스템은 작업을 여러 CPU에 분배하고 스케줄링
    • 자원 활용을 극대화하며 부하 분산을 달성
  • 고성능 컴퓨팅
    • 다중 처리기 시스템은 과학 및 엔지니어링 응용 분야에서 고성능 컴퓨터를 제공
    • 대용량 데이터 처리, 병렬 계산, 시뮬레이션 등에 활용됨
  • 장애 허용성
    • 일부 다중 처리기 시스템은 장애 허용 기능을 제공
    • 하나의 CPU가 고장 날 경우 시스템이 계속 작동할 수 있도록 함
  • 비용과 전력 효율성
    • 다중 처리기 시스템은 단일 CPU보다 비용과 전력 효율성이 높을 수 있음
    • 데이터 센서 및 서버 환경에서 활용됨
  • 프로그래밍 어려움
    • 다중 처리기 시스템을 활용하려면 병렬 프로그래밍에 대한 지식과 노력이 필요
    • 프로그램이 안정적으로 동작하도록 관리해야 함

# 시스템 콜

더보기

? 시스템 콜(System Call)

- 운영체제 커널의 서비스에 접근하기 위한 인터페이스 또는 프로그래밍 기능을 제공하는 프로그래밍 소프트웨어의 일부
- 응용 프로그램이 운영체제 서비스를 호출하여 하드웨어 자원 및 기능에 접근하는 방법을 제공
- 운영체제와 응용 프로그램 사이의 인터페이스로 동작하며, 운영체제는 이러한 요청을 받아들이고 처리
- 운영체제가 제공하는 API(Application Programming Interface)를 통해 호출되며, 프로그래머가 운영체제 서비스에 접근할 수 있도록 함

! 시스템 콜의 역할

  • 자원 접근 및 관리
    • 시스템 콜을 사용하면 응용 프로그램은 운영체제를 통해 하드웨어 자원에 접근할 수 있음
    • 이러한 자원에는 파일 시스템, 네트워크, 메모리, 입출력 장치 등이 포함됨
  • 프로세스 제어
    • 시스템 콜을 사용하여 프로세스를 생성, 종료, 일시 중지, 다시 시작하고, 프로세스 간 통신 및 동기화를 수행할 수 있음
  • 파일 및 디렉터리 관리
    • 파일 및 디렉터리를 생성, 열기, 읽기, 쓰기, 삭제 및 관리하기 위해 시스템 콜을 사용
  • 네트워킹
    • 네트워크 통신을 위해 소켓 생성, 연결, 데이터 전송 및 수신을 지원
  • 시간 및 날짜 관리
    • 현재 시간 및 날짜를 가져오거나 설정하는 데 사용됨
  • 메모리 관리
    • 동적 메모리 할당 및 해제를 위해 메모리 관리 함수를 호출
  • 보안 및 권한 관리
    • 사용자 권한, 파일 권한, 프로세스 권한 및 시스템 보안을 관리하기 위해 사용됨

# 커널

더보기

? 커널(Kernel)

- 컴퓨터 운영체제의 핵심 부분
- 운영체제의 핵심 기능을 실행하고 하드웨어 자원을 관리하는 소프트웨어 구성 요소
- 하드웨어와 응용 프로그램 간의 중재자 역할을 하며 시스템의 안정성, 효율성 및 보안을 제공
- 다양한 운영체제에서는 다른 형태의 커널을 사용하며, 이들은 운영체제의 종류 및 목적에 따라 다양한 기능을 제공

! 커널의 역할

  • 자원 관리
    • 커널은 하드웨어 자원을 효율적으로 관리
    • 이는 CPU, 메모리, 입출력 장치, 네트워크 인터페이스, 파일 시스템 등을 포함
    • 커널은 자원 할당, 사용, 반환, 추적을 조절하여 응용 프로그램이 자원을 공유하고 충돌을 방지
  • 프로세스 관리
    • 커널은 프로세스의 생성, 스케줄링, 종료 및 통신을 관리
    • 이로써 응용 프로그램이 동시에 실행되고 프로세스 간의 상호작용이 가능해짐
  • 메모리 관리
    • 커널은 시스템 메모리를 관리하여 응용 프로그램이 필요한 메모리를 할당하고 회수
    • 이는 물리적 메모리와 가상 메모리를 관리하여 메모리 단편화 문제를 해결하고
    • 여러 프로세스가 안전하게 공유 메모리에 접근할 수 있도록 함
  • 파일 시스템 관리
    • 커널은 파일 및 디렉토리를 생성, 읽기, 쓰기, 삭제하고 파일 시스템의 구조를 관리
    • 이로써 데이터의 영구 저장 및 조직이 가능해짐
  • 입출력(I/O) 관리
    • 커널은 입력 및 출력 장치와의 상호작용을 관리
    • 데이터를 읽고 쓰는 작업을 조정
  • 시스템 보안 및 권한 관리
    • 커널은 시스템 및 데이터의 보안을 유지하며 사용자와 프로세스의 권한을 관리
    • 불법 접근과 데이터 손상을 방지
  • 네트워킹 및 통신
    • 커널은 네트워크 자원과 통신을 관리
    • 다른 컴퓨터나 장치와의 상호 작용을 지원

# 커널모드

더보기

? 커널 모드(Kernel Mode)

- 컴퓨터의 중앙 처리 장치(CPU)가 운영체제의 커널 내에서 실행되는 특별한 실행 모드
- 이 모드에서 CPU는 운영체제의 핵심 기능과 서비스에 접근할 수 있으며 하드웨어 자원을 직접 제어할 수 있음
- 커널 모드와 사용자 모드 간의 전환은 컴퓨터 시스템의 안정성과 보안을 유지하는 데 중요하며, 운영체제의 핵심 역할을 수행하는 데 필수적

! 커널 모드의 특징

  • 권한과 제어
    • 커널 모드에서 CPU는 운영체제의 모든 기능에 대한 완전한 권한과 제어를 가짐
    • 이는 자원 할당, 프로세스 관리, 메모리 관리, 파일 시스템 액세스, 입출력 동작, 네트워크 통신 등을 포함
  • 시스템 콜 실행
    • 응용 프로그램이 운영체제의 서비스 또는 기능에 접근하려면, 시스템 콜을 호출하여 CPU를 커널 모드로 전환해야 함
    • 커널 모드에서 시스템 콜이 실행되며, 요청된 작업을 수행한 후 다시 사용자 모드로 돌아가 응용 프로그램에 결과 반환
  • 보안 및 안정성
    • 커널 모드는 운영체제의 핵심 부분으로, 시스템의 보안과 안정성을 유지하는 데 중요
    • 커널 모드에서 실행 중인 코드와 데이터에 접근하는 것은 제한됨
    • 이로써 시스템의 안정성과 보안을 확보
  • 용도 제한
    • 커널 모드는 주로 운영체제 내부에서 사용됨
    • 응용 프로그램은 사용자 모드(User Mode)에서 실행됨
    • 운영체제의 기능을 활용하기 위해 시스템 콜을 통해 커널 모드로 전환

# 유저모드

더보기

? 유저 모드(User Mode)

- 컴퓨터 프로세스가 실행되는 모드 중 하나로, 운영체제의 커널 모드와 대비됨
- 유저 모드에서 실행되는 프로세스는 일반 응용 프로그램이나 서비스
- 유저 모드와 커널 모드는 운영체제의 핵심 구성 요소로, 시스템의 안정성과 보안을 유지하며 응용 프로그램을 효과적으로 실행하는 데 중요한 역할

! 유저 모드의 특징

  • 제한된 권한
    • 유저 모드 프로세스는 일반적으로 제한된 권한을 갖음
    • 이 모드에서 운영체제의 핵심 기능과 하드웨어 자원에 직접 액세스 할 수 없음
    • 이로써 시스템의 보안과 안정성을 유지
  • 응용 프로그램 실행
    • 유저 모드에서 실행된느 프로세스는 주로 응용 프로그램이나 사용자 서비스를 담당
    • 이 프로세스는 일반적인 작업을 수행
    • 운영체제 서비스에 접근하려면 시스템 콜을 사용해 커널 모드로 전환해야 함
  • 자원 요청
    • 유저 모드에서 실행되는 프로세스는 자원 요청(파일 열기, 메모리 할당, 입출력 등) 시에 커널 모드로 전환
    • 커널에서 요청한 작업을 수행한 후 결과를 반환
  • 응용 프로그램 분리
    • 유저 모드는 응용 프로그램과 운영체제를 분리하는 중요한 방법
    • 이로써 응용 프로그램의 오류나 충돌이 전체 시스템에 영향을 미치지 않고 격리됨

# 폴링

더보기

? 폴링(Polling)

- 컴퓨터과학 및 통신에서 사용되는 데이터 수집 방법 중 하나
- 주기적으로 상태나 데이터의 변경을 확인하거나 검사하는 프로세스를 나타냄
- 이벤트 처리, 입출력 작업, 하드웨어 상태 모니터링 등 다양한 응용 분야에서 사용됨
- 자원 효율성과 실시간 처리 측면에서 한계
- 이러한 한계를 극복하기 위해 인터럽트 기반의 이벤트 알림 시스템이나 비동기식 이벤트 처리 방법이 사용되기도 함

! 폴링의 특징

  • 주기적인 확인
    • 폴링은 정기적인 간격으로 데이터나 상태를 확인하는 방식으로 동작
    • 예를 들어, 주기적으로 하드웨어 상태를 검사하거나 네트워크 트래픽을 모니터링하는 데 사용됨
  • 활성 대기
    • 폴링은 활성 대기(Active Waiting)를 수반
    • 프로세스나 장치는 데이터나 상태 변경을 확인하기 위해 지속적으로 검사
    • 변경이 감지되면 즉시 처리
  • 자원 소비
    • 폴링은 지속적인 자원 소비를 초래
    • 주기적인 확인 작업은 CPU 자원을 소모
    • 불필요한 폴링 작업을 효율성을 저하시킴
  • 지연과 부담
    • 폴링은 데이터 변경을 즉각적으로 감지하지 못할 수 있음
    • 데이터 변경이 발생하지 않는 경우에도 지속적으로 호가인 작업을 수행하므로 시스템에 부담을 줄 수 있음
  • 간단하고 예측 가능
    • 폴링은 구현이 간단하며 동작이 예측 가능하다는 장점

# 인터럽트

더보기

? 인터럽트(Interrupt)

- 컴퓨터 아키텍처와 운영체제에서 사용되는 중요한 개념
- 컴퓨터의 정상적인 실행 흐름을 일시적으로 중단하고 다른 중요한 작업을 수행하는 메커니즘으로 다양한 상황에서 발생
- 컴퓨터 시스템에서 하드웨어 및 소프트웨어 상태를 감지하고 처리하는 핵심 메커니즘으로, 다양한 응용 분야에서 사용됨
- 이를 통해 시스템은 효율적으로 이벤트 및 오류를 처리하고, 여러 작업을 동시에 수행할 수 있음

! 인터럽트의 특징

  • 인터럽트 유형
    • 여러 종류의 인터럽트가 존재
    • 하드웨어 인터럽트는 하드웨어 이벤트(예: 입출력 완료, 타이머 만료, 하드웨어 오류)로 인한 중단
    • 소프트웨어 인터럽트는 시스템 콜 또는 예외 상황(예: 나누기 0 예외)에서 발생
  • 인터럽트 처리
    • 인터럽트가 발생하면 현재 실행 중인 명령을 중단하고 운영체제 또는 인터럽트 서비스 루틴(Interrupt Service Routine, ISR)으로 이동하여 해당 인터럽트에 대한 처리를 수행
    • 처리가 완료되면 중단된 명령이나 프로세스를 다시 시작
  • 우선순위
    • 다양한 인터럽트가 존재하며, 각 인터럽트에는 우선순위가 부여됨
    • 높은 우선순위를 가진 인터럽트는 낮은 우선순위 인터럽트보다 먼저 처리됨
  • 인터럽트 컨트롤러
    • 인터럽트 컨트롤러는 다수의 인터럽트를 관리하고 조절하는 장치
    • 운영체제와 하드웨어 간의 인터럽트 관리를 담당
  • 실시간 처리
    • 인터럽트는 실시간 시스템 및 멀티태스킹 환경에서 중요한 역할
    • 예를 들어, 입출력 완료 입터럽트는 입출력 작업이 완료되자마자 데이터를 처리하므로 실시간 응용 프로그램에서 중요

# DMA

더보기

? 직접 메모리 액세스(Direct Memory Access, DMA)

- 컴퓨터 시스템에서 사용되는 데이터 전송 기술
- 주로 입출력(I/O) 작업에서 중앙 처리 장치(CPU)의 개입 없이 데이터를 메모리 간에 전송하는 메커니즘
- 다량 데이터 처리 및 입출력 작업을 더 효율적으로 수행하기 위한 중요한 기술
- 컴퓨터 아키텍처와 운영체제에서 활발하게 사용
- 이를 통해 시스템 성능이 향상되며 CPU는 다른 중요한 작업에 집중할 수 있음

! DMA의 특징과 역할

  • 데이터 전송
    • DMA는 주로 입출력 장치(하드 디스크, 네트워크 카드, 그래픽 카드 등)와 메모리 간의 데이터 전송을 관리
    • CPU의 개입 없이 대량의 데이터를 효율적으로 전송하고 저장하는 데 사용됨
  • CPU 부담 감소
    • 기존에는 CPU가 데이터를 직접 입출력 장치와 메모리간에 이동시킴
    • 반면, DMA는 CPU의 개입을 최소화하고 CPU의 다른 작업에 집중할 수 있도록 함
    • 이로써 시스템 성능이 향상됨
  • 효율적인 대량 데이터 전송
    • DMA는 대량의 데이터를 효율적으로 처리할 수 있음
    • 고속 및 실시간 데이터 전송이 필요한 응용 프로그램(비디오 스트리밍, 대용량 파일 복사, 네트워크 패킷 처리)에 중요
  • DMA 컨트롤러
    • DMA 동작은 DMA 컨트롤러에 의해 조절됨
    • DMA 컨트롤러는 전송 방향, 전송 양, 전송 속도 및 전송 완료 여부를 관리
    • CPU는 설정 및 초기화 후에 DMA 컨트롤러에 제어를 맡김
  • DMA 채널
    • 시스템에는 여러 개의 DMA 채널이 있을 수 있음
    • 각 채널은 다른 데이터 전송 작업을 수행하고 서로 독립적으로 작동

# 동기식 I/O

더보기

? 동기식 입출력(I/O)

- 프로그램이 데이터를 읽거나 쓸 때 프로그램의 실행이 입출력 작업 완료를 기다리는 방식
- 데이터 전송이 완료될 때까지 해당 프로세스가 차단되어 대기하며, 입출력 작업이 완료되면 제어가 프로세스에 다시 돌아와서 작업을 계속함
- 간단하고 직관적인 모델을 제공하지만, 입출력 작업이 완료될 때까지 대기해야 하므로 성능 및 효율성 측면에서 제한이 있음
- 이러한 특성을 고려하여 시스템 및 응용 프로그램의 요구에 맞게 I/O 모델을 선택해야 함

! 동기식 I/O의 특징

  • 차단(Blocked)
    • 입출력 작업이 진행중일 때, 해당 프로세스는 대기 상태에 머물러 있어야 함
    • 입출력 작업이 완료될 때까지 다른 작업을 수행할 수 없음
  • 간단하고 직관적
    • 동기식 I/O는 프로그래밍이 간단하고 직관적
    • 입출력 작업이 순차적으로 진행되기 때문에 프로그램의 흐름을 이해하기 쉬움
  • 데이터 신뢰성
    • 입출력 작업이 완료된 후에야 결과 데이터에 접근할 수 있기 때문에 데이터 신뢰성이 높음
    • 입출력이 완료되기 전에 결과에 접근하는 문제를 방지할 수 있음
  • 대기 시간 고려
    • 동기식 I/O는 입출력 작업이 완료될 때까지 대기해야 함
    • 입출력 작업의 속도에 따라 전체 시스템의 성능이 영향을 받을 수 있음

# 비동기식 I/O

더보기

? 비동기식 입출력(I/O)

- 프로세스가 입출력 작업을 시작한 후에도 다른 작업을 수행할 수 있는 방식
- 입출력 작업의 완료를 기다리지 않고 동시에 다른 작업을 처리할 수 있음
- 입출력 작업과 다른 작업을 동시에 처리할 수 있어 효율성과 응답성을 향상
- 복잡성과 코드 가독성 측면에서 주의가 필요

! 비동기식 I/O의 특징

  • 비차단(Non-Blocking)
    • 입출력 작업이 진행 중일때, 해당 프로세스는 입출력 작업이 완료되기를 기다리지 않고 다른 작업을 수행
    • 입출력 작업이 완료되기 전에도 프로세스는 계속 실행됨
  • 콜백(Callback) 함수
    • 비동기식 I/O는 종종 콜백 함수를 사용하여 입출력 작업이 완료되면 특정 함수를 자동으로 호출하도록 구성됨
    • 이를 통해 프로세스는 결과를 처리할 수 있음
  • 효율성 및 응답성 향상
    • 다른 작업을 수행하면서 입출력 작업이 백그라운드에서 처리되므로 시스템의 효율성과 응답성이 향상됨
    • 특히 네트워크 통신이나 대용량 파일 전송과 같은 대기 시간이 긴 작업에 유용
  • 복잡성 증가
    • 비동기식 모델은 콜백 함수 및 상태 관리를 통해 복잡성이 증가할 수 있음
    • 코드 가독성이 떨어질 수 있으며, 오류 처리 및 동기화에 주의가 필요
  • 다중 비동기 작업 처리
    • 여러 비동기 작업을 동시에 처리하는 것이 가능
    • 다중 스레드나 이벤트 기반의 프로그래밍 모델에서 활용됨
Comments