분류 전체보기 103

스프링 MVC 1편

* 인프런 김영한님의 강의 "스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술"을 듣고 정리한 내용입니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1 스프링의 전체구조 Dispatcher servlet? 스프링 mvc도 프론트 컨트롤러 패턴으로 구현되어있고 그 프론트 컨트롤러 역할을 하는것이 Dispatcher servlet이다. 스프링부트는 이 Dispatcher servlet을 서블릿으로 자동으로 등록하면서 모든 경로에 대해 매핑한다. (urlpatterns="/") 서블릿 호출 > FrameworkServlet에서 오버라이딩한 service()호출 > 여러 메서드가 호출 > DispacherServlet의 doDispatch..

Spring & SpringBoot 2023.03.29

Free-Space Management

free-space management 고정된 크기를 사용하는 paging을 이용하면 빈공간 관리가 쉬워진다. 하지만 가변크기일때는 빈공간 관리가 보다 어렵다. segment도 최대 크기는 일정하지만 그 최대 크기를 모두 segment로 사용하지는 않기 때문에 이것 역시 가변적이다. segment가 아닌 base and bound방식을 쓰더라도 한 덩어리의 크기는 가변이다. 또 이 segment를 사용하는 과정에서 남은 공간이 너무 조금씩 흩어져 있어서 사용할 수가 없는 external fragmentation현상이 생길 수 있다. 메모리의 할당과 반납 void *malloc(size_t size) //메모리 할당 요청 voif free(void *ptr) //메모리 반납 또한 메모리 할당을 요청하는 m..

운영체제 2023.03.28

Segmentation

segmentation 메모리 관리 기법중의 하나로, base and bound를 일반화한것이다. base and bound가 address space를 통째로 물리적 메모리에 배치하는 방식이라면, segmentation은 address space를 논리적으로 다른 공간으로 나누는 방식이다. segmentation은 virtual address space에서 사용하지 않는 빈공간을 굳이 물리적 메모리로 옮길 필요가 없다는 아이디어에서 시작한다. 즉, 가상주소공간에서 사용하지 않는 공간은 물리적 메모리에도 배치하지 않는다는 것이다. 따라서 듬성듬성 주소공간을 사용하는 sparse address space의 경우에는 segmentation이 유리하다. 16KB의 address space를 addressing..

운영체제 2023.03.28

Address Translation, base and bound

Address translation virtual address는 mmu라는 하드웨어에 의해 physical address로 변환된다.(hardware-based address translation) 설명을 위한 가정 1. 모든 메모리는 연속된 공간이다. 2. virtual address가 갖는 address space의 크기도 physical address보다 작다. 3. 모든 프로세스가 갖는 주소공간의 크기가 같다. virtual address space와 physical address 그림 속 프로세스의 address space에서는 코드가 oKB부터 들어있지만 물리적 메모리에서는 그와 다르게 32KB부터 시작한다. 다시 말해 프로그램이 메모리로 로딩되기 전, 기계어 코드를 생성할때 주소의 기준은 ..

운영체제 2023.03.27

The abstraction: Address space

메모리의 가상화, virtual address space virtual memory를 구성하는 핵심 요소. 오늘날의 컴퓨터는 프로그램 여러개를 cpu에 동시 탑재하여 time sharing하는 multiprogramming을 한다. 그리고 이 방법을 통해서 utilization(가용성), efficiency(효율성)을 높일 수 있다. 같은 프로그램으로 생성된 두개의 프로세스가 있다고 할 때, virtual address는 두 프로세스에서 모두 동일하다. (program이 동일하기 때문.) 하지만 물리적으로는 두 프로세스가 다른 곳에 있어야 한다. 따라서 각 address space마다 각 덩어리들이 물리적인 위치로는 어디로 갔는지에 대한 매핑정보(주소변환정보)가 필요하다. 다시말해 매핑정보는 프로세스마다..

운영체제 2023.03.27

Scheduling: Proportional Share

proportional share란? 비례 배분, 공정 배분(fair share)으로도 불린다. 정해진 비율대로 cpu를 나눠쓰게 하는 것에 집중한다. performance보다는 fairness에 초점을 맞추는 것이다. Lottery scheduling 말그대로 추첨권 티켓의 소유권에 따라서 cpu를 분배하는 스케줄링 기법이다. 예를 들어 프로세스 a,b가 75%. 25%로 cpu를 나눠쓰게 하고싶으면 a에게 티켓 75장을, b에게 25장을 주는 것이다. 그리고 추첨된 각 티켓을 가지고있는 프로세스가 당첨된 것이므로 그 비율만큼 cpu를 사용한다. Random number를 생성하며 진행되기 때문에, 시도할때마다 결과는 달라진다. (비결정적) Ticket Mechanisms 1. Ticket curren..

운영체제 2023.03.21

Scheduling: The Multi-Level Feedback Queue (MLFQ)

Multi-Level Feedback Queue의 목적 Multi-Level Feedback Queue (MLFQ)는 두가지의 목적을 갖는다. 1. turnaround time(반환시간) 최적화 반환시간 기준에 있어 SJF/STCF에 근접한 성능을 만드려고 한다. 기존의 SJF/STCF는 프로그램의 실행전에 그 실행시간을 스케줄러가 미리 알아야 한다는 현실적인 제약사항이 있었다. 이것을 극복하기 위해 MLFQ는 실제 미래는 모르지만 일단 작고 짧은 job에게 우선순위를 부여하는 방식을 시도하게 된다. 2. response time(반응시간) 최소화 반응시간 기준에 있어 Round Robin에 근접한 공평성을 구현하려고 한다. Round Robin은 반응시간은 좋지만 반환시간에 있어서는 매우 나쁘다. ML..

운영체제 2023.03.21

Scheduling: FIFO, SJF, STCF, Round Robin, incorporation IO

Scheduling Metrics context switching이 일어날 때, 새로운 프로세스는 어떻게 결정되는가? 바로 스케줄링 정책(scheduling policies)에 의해서이다. 그리고 이 정책이 어떤지 판단하는 기준이 바로 Scheduling Metrics이다. 이 metric에는 성능측면(performance)에서 바라보는 기준, 공평한가의 측면(fairness)에서 바라보는 기준이 있는데 각각 밑에서 알아보겠다. 1.turnaround time(반환시간) turnaround time = completion time - arrival time 반환시간이란 해당 job이 도착했을 때부터 cpu를 다 사용해서 끝났을때까지 걸리는 시간이다. (job이 끝난 시간 - 도착한 시간) 그리고 반환시간..

운영체제 2023.03.20

Mechanism : Limited Direct Execution

Limited Direct Execution cpu를 가상화할때 필요한 mechanism에 대해서 알아보자. 여기서 direct라는 것은 사용자 프로그램이든, 커널이든 상관없이 cpu가 직접 처리한다는 의미이고, 성능때문에 그렇게 하고있지만 이렇게 될 경우 운영체제가 cpu를 직접 컨트롤(스케줄링)할수 없게 되는 문제가 생긴다. 그런데 운영체제 입장에서는 cpu를 하나의 자원으로 보고 적절히 스케줄링할 수 있어야 하기 때문에 성능손실 없이 cpu를 컨트롤하기 위해서 고안된 것이 바로 Limited Direct Execution(제한적 직접 실행)이라는 메커니즘이다. cpu가 물리적으로는 하나지만 모드는 두개가 있다. (user mode, kernel mode) 그리고 이 모드를 어떻게 설정하느냐에 따라서..

운영체제 2023.03.13