본문 바로가기

전체 글81

3장. 프로세스 관리 가상 기억장치가 없는 단순한 경우만 나타낸다. 실제 프로세스의 생성 및 삭제는 5장에서 자세히 다룸 프로세스 생성의 목적 같은 프로그램의 처리를 여러 개의 프로세스가 나눠서 처리, 예를 들어 웹 서버처럼 리퀘스트가 여러 개 들어왔을 때 동시에 처리해야 하는경우 전혀 다른 프로그램을 생성합니다. 예를 들어 bash 로부터 각종 프로그램을 새로 생성하는 경우 fork(), execve() 함수를 사용 (시스템 내부에서는 clone() 과 execve() 시스템 콜을 호출) fork() 함수 목적 1의 경우에는 fork() 함수만을 사용. fork() 함수를 실행하면 실행한 프로세스와 함께 새로운 프로세스가 1개 생성, 이를 각각 부모, 자식 프로세스라 부름 자식 프로세스용 메모리 영역을 작성하고 거기에 부모.. 2022. 7. 14.
2장. 사용자모드로 구현되는 기능 OS는 커널 이외에도 사용자 모드에서 동작하는 다양한 프로그램으로 구성 라이브러리 형태, 단독 프로그램으로 동작 이 부분은 다양.. 시스템 콜, OS가 제공하는 라이브러리, OS가 제공하는 프로그램에 대한 설명 및 필요 이유 시스템 콜 프로세스에서 커널의 도움이 필요할 때 시스템 콜을 이용해 도움 요청 프로세스 생성, 삭제 메모리 확보, 해제 네트워크 파일 시스템 등등 CPU의 모드 변경 프로세스는 보통 사용자 모드로 실행, 처리를 위해 시스템 콜을 호출하면 CPU 에서 인터럽트 발생 그 후 커널 모드에서 해당 동작을 실행, 완료 후 사용자 모드로 원복 커널 모드로 가기 전에 프로세스의 요구가 유효한지 확인을 거침 -> 맞지 않으면 시스템 콜 실패 (인터럽트를 하고, 확인을 할까? 아니면 확인 후 인터럽.. 2022. 7. 14.
1장. 컴퓨터 시스템 개요 - 애플리케이션 : 사용자가 직접 사용, 컴퓨터의 오피스 프로그램 또는 스마트폰 앱등 - 미틀웨어 : 여러 애플리케이션이 공통으로 사용하는 처리를 묶어서 애플리케이션의 실행을 도와줌 - OS(운영체제) : 하드웨어를 직접 조작하여 애플리케이션이나 미들웨어의 실행에 필요한 기능을 제공 OS 는 여러 가지 프로그램을 `프로세스` 라고 하는 단위로 실행 소프트웨어(프로그램)은 1개 또는 여러 개의 프로세스로 구성 CPU 에는 커널 모드와 사용자 모드, 2가지의 모드가 있다. 디바이스 드라이버 동작 - 커널 모드 프로세스 동작 - 사용자 모드 OS 의 핵심 부분이 되는 처리(프로세스 관리, 스케쥴링, 메모리 관리 등)를 모아 담당하는 프로그램을 커널이라고 부름. 커널에서는 시스템에 탑재된 CPU 나 메모리 등의.. 2022. 7. 14.
자바 비동기 (2) 지난 포스팅에서 비동기에 대해 살짝 알아봤습니다. 기본적인 Thread, Runnable 를 사용하거나, 자바5 부터 생긴 Future, FutureTask, 그리고 web 3.0 부터 지원된 비동기 서블릿이 있었습니다. 그리고 자바 8로 넘어가면서 비동기를 지원하기 위해 CompletableFuture 가 새로 생겼는데요. 이번에는 이 CompleteableFuture 에 대해 알아보도록 하겠습니다. 1. CompletableFuture? 앞에서 언급했듯이 자바는 비동기를 지원하기 위해 Future 이라는 인터페이스가 있었습니다. 그런데, 왜 CompletableFuture 가 추가되었을까요? 여기서 Future 의 인터페이스에 있는 메소드들을 보면, boolean cancel(boolean mayIn.. 2022. 7. 14.
자바 비동기 (1) 최근 학생들에게 학습을 추천해주는 것과 관련된 작업을 하고 있는데요. 주 단위로 추천이 되어 매주 배치를 통해서 추천 학습이 들어가지만, 신규 회원일 경우 배치에서 누락되는 경우가 있어서, 로그인 등의 행위를 했을 때 비동기적으로 데이터를 쌓아줄까 고민을 하고 있습니다. 프로젝트는 Java - Spring 을 기반으로 하고 있는데, 잠깐만 찾아봐도 방법이 많습니다. 이번 글에서는 비동기에 대한 정의 및 올드한 내용에 대해 다뤄볼까 합니다. 1. 비동기 프로그래밍이란? 일단, 비동기를 논하기 전에 왜 비동기가 나왔는지부터 알아야 할 것 같습니다. 기본적으로 메소드를 실행한다는 것은 메소드가 완료될 때까지 그 메소드를 호출한 코드는 기다려야 함(블록킹 blocking) 을 의미합니다. 얼핏 들으면 당연해보입.. 2022. 7. 14.
Caffeine(캐시 라이브러리) 사용 이번에 회사에서 학습기에 들어가는 화면에 대한 관리를 하는데, 자주 바뀌는 사항이 아니다보니, 캐쉬를 적용하자는 말이 나왔다. 캐시라고 하면 레디스(redis) 를 생각했었는데, caffeine 이라는 것이 나와서, 적용해볼겸 정리해보려고 한다 . 1. Caffeine Java 8을 기반으로 하는 High Performance 캐싱 라이브러리 빈도 및 최근 데이터에 따라 사이즈가 넘어갈 경우 eviction(방출?) 최근 접근 or 쓰기 에 따라 만료 시간 설정 비동기적으로 refresh 가능 key, values 가 자동적으로 weak reference 로 wrap cache access 에 대한 statistics 제공 등등.. 이 있다. 2. 사용 우선, maven 을 사용하므로 pom.xml 에 .. 2022. 7. 14.