목록2024/12 (6)
신비한 개발사전
멀티프로그래밍 개념의 등장과 함께 다수의 프로세스를 메모리에 적재해 유동적으로 실행시킬 수 있게 되면서 운영체제는 CPU 자원이 낭비되지 않도록 효율적으로 분배하는 방법이 필요하게 됐다. 효율적인 CPU 사용을 위해 프로세스 또는 스레드에게 CPU를 할당하는 것을 CPU 스케줄링이라고 한다. 스케줄러운영체제는 스케줄러라고 하는 커널의 모듈을 사용해 어떤 프로세스에게 자원을 할당할지 결정한다. 스케줄러는 크게 3가지로 나눌 수 있다: · 장기 스케줄러 (Long-term scheduler)어떤 프로세스를 메모리에 올릴지(=준비큐에 삽입할지)를 결정한다※ 준비 큐 = CPU를 이용하고자 하는 프로세스들의 대기줄메모리에 동시에 올라가있는 프로세스의 수를 조절한다초~분마다 호출되며 자주 호출되지 않아 속도가 느..
컴퓨터는 데이터를 입력 받거나 출력할 수 있다. I/O는 이러한 입력(input)과 출력(output)을 압축해서 부르는 표현이며, I/O 시스템은 컴퓨터의 데이터 입출력에 사용되는 모든 하드웨어 및 소프트웨어를 뜻한다. 기본적으로 컴퓨터와 입력이나 출력 통신이 가능한 기기를 통틀어 입출력 장치라고 한다. 사용자가 물리적으로 조작하는 마우스나 키보드 외에도 다양한 입출력 장치가 있다:데이터 저장 디스크네트워크 카드, 모뎀 등 데이터 송수신을 핸들링하는 장치사용자와 상호작용하는 장치: 모니터, 게임패드I/O 시스템은 사용자와 컴퓨터 또는 외부 장치들 간의 상호작용에서 중간다리와 같은 역할을 한다. 입출력 장치는 물리적인 device와 전자적인 controller(장치 컨트롤러)로 구성되어있으며, contr..
운영체제(operating system)란 컴퓨터 기기 즉 하드웨어가 제대로 동작하도록 관리하는 소프트웨어다. 컴퓨터 시스템의 자원을 효율적으로 활용하는 것이 운영체제의 목표다. 또한 하드웨어와 사용자 사이에서 정보 교환이 가능하도록 인터페이스를 제공하기도 한다. 운영체제는 프로세스 스케줄링, 메모리 관리, 입출력 관리, 외부 장치 관리 등의 역할을 수행한다. 운영체제 시스템운영체제는 기술의 발전과 함께 필요에 따라 다양한 방식으로 컴퓨터 자원을 운용하도록 변화해왔다. 운영체제 시스템은 여러 종류가 있는데, 오늘날의 운영체제는 워낙 복잡해 다수의 시스템을 복합적으로 쓰고 있다. · 다중 프로그래밍 시스템다중 프로그래밍 시스템(multi-programming system)은 CPU의 사용률과 처리량을 높이..
전송 후 대기 프로토콜전송 후 대기 프로토콜(Stop-and-Wait Protocol)은 데이터 전송 과정에서 한 번에 하나의 프레임만 전송하고, 수신자로부터 ACK 응답을 기다린 후 다음 프레임을 전송하는 간단한 흐름 제어 방식으로, 아래와 같이 동작한다:송신자는 하나의 프레임을 전송수신자는 프레임을 수신한 후, 제대로 수신했음을 알리는 ACK를 송신자에게 전달송신자가 ACK를 받으면 다음 프레임을 전송ACK가 도착하지 않으면 일정 시간 후 프레임을 재전송전송 후 대기 프로토콜은 일종의 흐름 제어 방식이다. 구조 자체가 간단해서 쉽게 구현할 수 있는 반면 송신자가 ACK를 기다리는 동안에는 대기 시간이 발생해 대역폭 사용률이 낮다는 단점이 있다. 또한 네트워크 대기 시간이 길어질 수록 전송 속도가 느려..
TCP의 재전송 타이머와 빠른 재전송TCP는 재전송(retransmission) 타이머를 사용해 손실된 데이터를 재전송할 수 있다. 재전송 타이머는 송신하는 쪽이 패킷을 전송할 때마다 가동되는데, 일정 시간(RTO—retransmission timeout) 내에 ACK 응답이 오지 않으면 패킷이 손실됐다고 가정해 재전송을 진행하게 된다. * RTO는 패킷이 왕복하는 데 걸리는 시간 등을 활용해 계산하는 값이라서 고정된 값이 아니다. 타이머를 기반으로 패킷을 재전송하면 타이머의 대기 시간(RTO)에 따라 손실된 패킷의 재전송에 지연이 발생할 수 있다. 이 점을 보완하기 위해 타이머가 다 되기 전에 패킷을 재전송하는 빠른 재전송(fast retransmit)도 사용하는데, 빠른 재전송은 수신 측이 동일한(중..
지난 11월에는 JSCODE에서 운영하는 모의면접 스터디에 참여했었다. 5주 동안 CS 관련 지식을 학습하고 매주 팀 단위로 모의면접을 진행하는 방식의 스터디인데, 스터디에서 지원하는 과목 중 지금의 나한테 필요한 1순위라고 생각하는 컴퓨터 네트워크에 신청해서 참여하게 됐다. 사실 JSCODE 모의면접 스터디는 이전부터 알고 있었는데 면접 훈련이란게 내 comfort zone에서 구만리나 떨어져 있는 영역이라 그동안 계속 미뤄뒀었다. 그러다 용기 한번 내서 다음 기수 모집 기간이 되면 문자 알림을 받을 수 있도록 요청을 넣었고, 이후 모집 문자를 받고 또 한번 용기내서 참여 신청을 했다. 막상 신청해놓고도 11월이 다가오니 부담스러워서 취소하고 다음 기수를 기다리는 동안 네트워크 공부를 미리 해놓을지 고..