computer science 14

HTTP 진화 (HTTP/0.9 -> HTTP/1.0 -> HTTP/1.1 -> HTTP/2.0 -> HTTP/3.0 - QUIC)

웹개발을 한다면 알아야할 프로토콜인 HTTP. 시대에 흐름에 맞게 어떻게 진화해 왔는지 알아보자. 스스로 공부하고 정리한 내용으로 잘못된 내용이 있을 수 있습니다. 잘못된 내용이 있으면 지적 바랍니다. 🙂 HTTP/0.9 최초의 HTTP 버전이다. 원-라인 프로토콜이라고도 한다. 요청이 단일 라인으로 구성되어 있어서. request GET /mypage.html response A very simple HTML page 요청과 응답 메시지를 보면 매우 simple하다. GET메서드만 존재 별다른 헤더도 없음 HTML파일만 전송가능 -> 확장성 부족 따로 버전이 0.9로 시작한게 아니고, HTTP 1을 기준으로 이전의 버전이라는 것을 의미한다 HTTP/1.0 HTTP/0.9는 확장이 어렵기에 만들어진 버전..

computer science 2023.05.13

[OS] 운영체제 I/O System & Disk Management

I/O System이 어떻게 동작하고, OS는 시스템 성능을 높이기 위해서 어떻게 I/O System을 support하는지 알아보자. 또, 디스크는 OS가 어떻게 관리하는 지도 알아보자. I/O System (HW) I/O System은 기본적으로 입력장치라면 데이터를 입력 받아서 메모리에 저장하고 프로세서가 메모리에 저장된 데이터를 사용하여 연산할것이다. 반대로 출력장치라면 프로세서가 연산/명령을 하여 메모리에 저장된 데이터를 출력장치로 내 보낼 것이다. I/O Mechanisms 좀더 세밀하게 어떤 방식으로 I/O를 통해서 데이터가 전송되고 처리하는지를 알아보자. Processor controlled memory access 이름에서 알수 있듯이 I/O로 부터 주고 받는 데이터는 프로세서(CPU)의 ..

computer science 2021.10.12

[OS] 운영체제 File system

OS가 파일을 어떻게 관리하는지 알아보자. 그렇기 위해선 파일시스템이 뭔지, 파일이 어디에 저장되는지 등을 알아야겠다. 먼저 파일이 저장되는 보조기억장치인 Disk에 대해서 알아보자.(HDD -기준) Disk System 데이터를 영구적으로 저장하는 저장 장치이다. 비 휘발성이라는 특징을 가졌다.(영구적이므로.) 파일은 이 디스크에(보조기억장치)에 저장된다. 디스크는 이렇게 Disk Pack이라는 장치로 이루어져있다. 위에서 Disk Pack을 보면 이렇게 생겼고, 각 섹터(섹터가 뭔지는 바로 아래서 알아볼것!) 마다 번호가 있는 것을 알수 있다. 스포하자면 이 섹터에 데이터가 저장된다. Disk Pack 실제로 데이터가 디스크에 저장되는 하드웨어이다. 어떻게 구성되어 있는지 알아보자. 먼저 원들이 여러..

computer science 2021.10.04

[OS] 운영체제 Virtual Memory Management

어떻게 하면 가상메모리를 잘 관리하여 가상메모리 시스템 성능을 '최적화'를 시킬수 있는지 알아보자! 지금부터 말하는 기법은 paging 기법을 토대로 말할것, segmentation도 가상메모리 관리 관련해선 동일하기에.. 가상메모리의 Cost model 가상메모리의 성능을 높이기 위한 지표로는 다양한 것이 있지만 그중 가장 대표적인 Page fault frequency(발생빈도) Page fault rate(발생률) 두 가지가 존재한다. (address mapping 공부할때, residence bit가 0이면 page fault로 context switching을 통한 높은 오버헤드가 발생하기에 성능에 영향을 크게 미친다고 알고있다.) 즉, 'Page fault'를 최소화 하는 것이 가상메모리의 성능..

computer science 2021.09.19

[OS] 운영체제 Virtual Memory

continuous memory allocation은 프로세스가 연속적으로 메모리에 적재되는것을 의미한다. 그와는 다르게 프로세스가 연속적으로 메모리에 적재되지 않을수도 있다. 이를 Non-continuous memory allocation이라한다. 프로세스가 연속적으로 메모리에 할당되지않고 블럭단위로 여러개로 쪼개서 할당될수 있다면 메모리를 더 효율적으로 사용할수 있을것이다. 그리고 사용되지 않는 블럭(프로세스를 블럭단위로 여러개 나눈것)은 swap device(disk)에 저장하니 메인메모리만 사용할때 보다 더 큰 용량을 관리할수 있다. Non-continuous memory allocation을 통해서 가상메모리라는 개념이 존재한다. 좀더 자세히 알아보자. Virtual Memory(Storage)..

computer science 2021.09.02

[OS] 운영체제 Memory management

운영체제가 어떻게 메모리를 관리하는지 알아보자. 그전에 먼저 메모리에 대한 용어들 부터 알고 가자 메모리(기억장치)의 종류 레지스터는 cpu core내부에 존재하고, 캐시는 cpu내에 존재하는걸 확인할수있다.(그림에서) 메인메모리와 보조기억장치는 cpu내부에 없고 외부에 존재한다. 즉, 레지스터, 캐시는 HW(cpu)가 관리하고 메인메모리, 보조기억장치는 SW가 관리한다. 메모리(기억장치)의 계층구조 메모리는 보조기억장치 -> 메인 메모리 -> 캐시 -> 레지스터로 데이터를 전송하는 계층구조로 존재한다. 알아야할 두가지 용어 block : 보조기억장치가 주기억장치(메인메모리)로 데이터를 전송하는 단위(1 ~ 4KB) word : 주기억장치(메인메모리)가 레지스터로 데이터를 전송하는 단위(16 ~ 64bi..

computer science 2021.08.29

[OS] 운영체제 Deadlock

교착상태인 Deadlock에 대해서 알아보자. 교착상태 그림과 같이 차가 도로에서 너무 막혀서 가고 싶은 곳으로 갈수가 없다. (어떠한 차도) 프로세스 관점에서 본다면 차가 프로세스이고 가고싶은 도로가 자원이면 프로세스들이 자원을 할당받지못해 작업을 수행하지 못하는 상태를 의미한다. 이것이 교착상태, deadlock이다. 교착상태 개념 프로세스 상태전이도에서 blocked/asleep상태의 프로세스는 프로세서를 할당받아 작업을 수행중 어떠한 자원이 또필요하여, (혹은 이벤트가 필요하여) 프로세서를 반납하고 자원을 대기하는(이벤트를 대기하는) 상태의 프로세스인데 이 때 영영, 영원히 자원을 받을 가능성이 없는 프로세스를 교착상태에 빠졌다 한다. 교착상태에 빠진 프로세스가 있는 시스템을 시스템이 deadlo..

computer science 2021.08.20

[OS] 운영체제 프로세스 동기화 & 상호배제

다중프로그래밍 시스템은 프로세스가 여러개 존재하며, 프로세스들이 서로 독립적으로 동작한다. 그렇기에 공유 자원이나 데이터가 있을 경우 여러 프로세스가 접근하여 수행하면 예상치 못하는 문제가 발생할수 있다. 그렇기에 다중 프로그래밍 시스템 내에서 프로세스들 끼리 서로 동작을 맞추거나 대화를 하는 동기화과정이 필요하다. 이번에는 프로세스들간 동기화가 어떻게 이루어지는지, 그 과정에서 프로세스들간 상호배제가 어떻게 이루어지기에 공유 자원에 대해 자원을 할당받아 작업을 수행하는지 알아보자 동기화(Process Synchronization) 프로세스들이 서로 대화를 하며 동작을 맞추는 것을 의미한다. 서로간의 정보를 공유하는 것을 의미한다. 물론 다중 프로그래밍 시스템에서 프로세스들이 여러개 존재할 경우 필요한 ..

computer science 2021.07.28

[OS] 운영체제 Process Scheduling 기법

스케쥴링이란 한정된 자원을 할당할 프로세스를 선택하는 것을 말한다. 자원을 할당할 프로세스를 선택하는 기법(알고리즘)에는 여러가지가 존재하는데 하나씩 알아보자!! FCFS(First-Come-First-Service) 먼저 온 녀석부터 자원을 할당하는 기법(알고리즘)이다. 먼저 ready queue에 온 프로세스부터 자원을 할당하고, 할당한 자원은 프로세스가 수행이 끝날때까지, 할당 받는다. 즉, 비선점 스케쥴링 정책을 이용한다. 비선점 스케쥴링 정책 이용 자원에 대해서 효율적으로 사용 가능하다.(왜냐면 비선점 스케쥴링 정책을 이용하기 때문에 스케쥴링 overhead가 낮기 때문이다.) FCFS는 Batch System에 적합하고, 응답성이 중요한 대화형 시스템인 interactive System에 부적..

computer science 2021.07.22

[OS] 운영체제 Process Scheduling

OS가 관리하는 스케쥴링이란 뭔지? 그중 프로세스 스케쥴링이란 뭔지?에 대해서 알아보자 다중프로그래밍(Multi Programming) OS를 구분함에 있어 하나의 시스템에서 여러개의 프로세스가 존재하는 시스템을 다중 프로그래밍이라 했었다. 이렇게 여러개의 프로세스가 하나의 시스템에 존재하면 한정된 자원을 잘~~ 할당해야 컴퓨터 시스템의 성능이 높아질수 있다. 이 자원을 할당할 프로세스를 선택하는 것을 스케쥴링이라 한다. 스케쥴링이란 자원을 할당할 프로세스를 선택하는 것이다. (in 다중프로그래밍) 한정된 자원을 관리하는데 있어 시간을 분할 해서 프로세스에게 할당할지, 아니면 한정된 자원의 공간을 분할해서 프로세스에게 할당할지에 대한 방법이 존재한다. 자원 관리 시간 분할 관리 한정된 자원을 할당하는 시..

computer science 2021.07.21