Study22 [OS] 메모리 관리 (메모리할당, 단편화, swapping, segmentation) 메모리에 대한 내용은 핀토스 때 다루었으나, 전체적인 큰 그림을 다시 한번 잡고 싶어서 스터디를 준비하며 다시 정리해본다. 1. 메인메모리 메인메모리와 레지스터는 CPU가 직접 접근할 수 있는 저장장치이다. 레지스터는 일반적으로 CPU의 one cycle에 CPU가 도달할 수 있지만, 메모리는 메모리 버스를 통한 데이터의 교환으로 여러 사이클이 소모된다. 속도적인 측면을 개선하고자 하드웨어의 일종인 cache가 고안되었다. 또한 OS를 유저프로그램의 접근으로부터 보호한다던가, 프로그램 별로 서로의 영역을 침범하지 않도록 하기 위해 하드웨어가 발명되었는데 대표적으로 base register와 limit register가 있다. 메모리 공간의 분리 (유저영역과 커널영역) 유저 메모리 공간과 OS 메모리 공간.. 2023. 3. 18. [Java] 제어의 역전(IoC)과 의존관계 주입(DI) 김영한님의 Java 핵심원리를 다시 복습하며 제어의 역전과 의존관계 주입을 정리해본다. 결론부터 말하자면 제어의 역전은 프로그램의 제어흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것이다. 의존성 주입은 실행시점(런타임)에 외부에서 실제 구현객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것 IoC컨테이너 혹은 DI 컨테이너는 객체를 생성하고 관리하면서 의존관계를 연결해주는 것이다. (아래에서는 AppConfig) 확 와닿는 말은 아닌 것 같다. 코드를 보면서 하나씩 정리해보자 1. 제어의 역전 (Inversion of Control) 1) 변경 전 : DIP가 지켜지지 않음! 주문서비스 클라이언트 (OrderServiceImpl)은 추상인터페이스 뿐만 아니라 구체.. 2023. 3. 16. [OS] Blocking, Non-blocking, Sync, Async 개념 (굳이 4등분?) 어떤 개념이든 정확하게 정의하고 규정하는 것이 필요하지만, block, non-block, sync, async는 보면 볼수록 헷갈리는 구석이 있다. block이 sync 같고 non-block이 async 같은데 찾아보면 찾아볼수록 개념이 혼재되어 있다는 생각이 많이 들었다. (그러면서도 정확히는 다르다고들 한다..) 그러던 와중 stackoverflow에서 발견한 comment 개념이 맥락에 따라 용어 자체가 똑같이 쓰일수도, 비슷하게 쓰일수도, 혹은 다르게 쓰일 수도 있으니 너무 무자르듯이 해당 개념을 쪼개기 보다는 이해는 하되 어느정도의 추상성은 유지한채 가는게 어떨까 라는 생각을 가지게 된 것 같다. 서론이 길었다. 밑에는 정리 Blocking blocking process request가 생기.. 2023. 3. 15. [OS] 스케쥴러와 CPU 스케쥴링 1. 프로세스 스케쥴링 정의 프로세스 스케쥴링이란 CPU로부터 running 중인 프로세스를 스케쥴에 맞게 동작시키기 위한 하나의 활동 특히 멀티프로그래밍 OS에서 필수적인 요소임 비선점형과 선점형 비선점형 : 쉽게 말해 round-robin , 강제로 빼앗지 않고 자진 반납 (non-preemptive) 선점형 : 우선순위에 따른 프로세스 switching , 강제로 빼앗음 (preemptive) 프로세스 스케쥴링 큐 OS는 PCBs를 통해 프로세스 스케쥴링 큐를 관리하며 OS는 프로세스의 상태에 따라 별개의 queue를 관리하고 있으며, 같은 상태의 프로세스 PCBs들은 같은 queue에 저장이 됨 Job Queue : 현재 시스템 내에 있는 모든 프로세스 집합 (ready queue + device.. 2023. 3. 12. [Java] 상속과 인터페이스 상속 상속에서는 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만듦으로써 중복되는 코드를 줄이고 개발시간을 단축시킨다. extends를 사용하여 자식이 부모를 선택하며 자식 객체가 생성되면 부모 객체는 먼저 생성된다 (super()가 숨겨져있음) 메소드 오버라이딩을 통하여 자식은 부모가 가지고 있는 메서드를 다르게 사용할 수 있고, final 키워드를 통해서 상속이 불가능한 클래스나 오버라이딩이 불가능한 메서드를 만들 수 있다. protected 접근 제한자는 default와 public의 중간이라고 할 수 있는데, 같은 패키지이거나 자식 객체만 사용이 가능하다. (상속에서 사용이 많이 될 것으로 생각되었다.) 타입 변환의 경우 부모타입 변수 = 자식타입객체; 로 이루어진다. 이 개념은 계속 보아도.. 2023. 3. 12. [기초] RESTful API란 무엇일까? 1. API? Application Programming Interface 두 소프트웨어가 서로 통신하는데 필요한 일종의 약속으로,통신은 requests와 response를 통해서 이루어짐 이 약속에 대한 일련의 정의(definitions)나 규약(protocols)들이 정해져있고, Client(request) → ← Server(response) 2. REST 1) REST Representational State Transfer REpresentational : 대표적인 State : 상태의 Transfer : 전송 로이필딩(Roy Fielding)이 자신의 2000년 박사 학위 논문에 정의한 네트워크 소프트웨어 아키텍처 ‘네트워크에서 통신 구성시 이런 구조로 설계하라는 지침’ 기존에는 Network.. 2023. 3. 1. 이전 1 2 3 4 다음