스레드와 멀티 스레딩 스레드 스레드는 프로세스의 실행 가능한 가장 작은 단위이다. 프로세스는 여러 스레드를 가질 수 있다. 스레드는 코드, 데이터, 힙을 스레드끼리 서로 공유한다. 멀티 스레딩 프로세스 내 작업을 멀티 스레드로 처리하는 기법이며 스레드끼리 서로 자원을 공유하기 때문에 효율성이 높다. 예를 들어 새 프로세스를 생성하는 대신 스레드를 사용하는 웹 서버의 경우 훨씬 적은 리소스를 소비하며, 한 스레드가 중단되어도 다른 스레드는 실행 상태일 수 있기 때문에 중단되지 않은 빠른 처리가 가능하다. 또한 동시성에도 큰 장점이 있다. 하지만 한 스레드에 문제가 생겨 다른 스레드에도 영향을 끼치면 프로세스에 영향을 줄 수 있다. 동시성 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것 처럼 ..
프로세스의 메모리 구조 운영체제는 프로세스에 적절한 메모리를 할당한다. 메모리 구조는 동적 영역인 스택과 힙, 정적 영역인 데이터 영역과 코드 영역으로 나눠진다. 스택은 위 주소부터 할당되고 힙은 아래 주소부터 할당된다. 스택 지역변수, 매개변수, 함수가 저장되고 컴파일 시에 크기가 결정되며 '동적'인 특징을 갖는다. 함수가 함수를 재귀적으로 호출하면서 동적으로 크기가 늘어날 수 있는데, 이 때 힙과 스택의 메모리 영역이 겹치면 안되기 때문에 힙과 스택 사이의 공간을 비워 놓는다. 힙 동적 할당할 때 사용되며 런타임 시 크기가 결정된다. 예를 들어 벡터 같은 동적 배열은 당연히 힙에 동적 할당된다. '동적'인 특징을 갖는다. 데이터 영역 전역변수, 지역변수가 저장되고, 정적인 특징을 갖는 프로그램이 종료..
프로세스(Process)는 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업이라는 용어와 거의 같은 의미로 쓰인다. 스레드(Thread)는 프로세스 내 작업의 흐름을 말한다. 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행한다. 프로세스와 컴파일 과정 프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 되는 것을 의미한다. 전처리 소스 코드의 주석을 제거하고 #include 등 헤더 파일을 병합하여 매크로를 치환한다. 컴파일러 오류 처리, 코드 최적화 작업을 하며 어셈블리어로 변환한다. 어셈블러 어셈블리어는 목적 코드(object code..
메모리 관리 운영체제의 대표적인 할 일 중 하나가 메모리 관리이다. 컴퓨터 내의 한정된 메모리를 극한으로 활용해야 하기 때문이다. 가상 메모리 (virtual memory) 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 가상적으로 주어진 주소를 가상 주소(local address)라고 하며, 실제 메모리상에 있는 주소를 실제 주소(physical address)라고 한다. 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환되며, 이 덕분에 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있다. 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가 들어 있..
메모리 계층 레지스터, 캐시, 메모리, 저장장치로 구성되어 있다. 레지스터 : CPU 안에 있는 작은 메모리. 휘발성, 속도 가장 빠름, 기억 용량이 가장 적음. 캐시 : L1, L2 캐시를 지칭. 휘발성, 속도 빠름, 기억 용량 적음. 주기억장치 : RAM을 가리킨다. 휘발성, 속도 보통, 기억 용량 보통. 보조기억장치 : HDD, SDD를 일컬으며 휘발성, 속도 낮음, 기억 용량 많음. 램은 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하고 이를 필요 시마다 CPU에 빠르게 전달하는 역할을 한다. 계층 위로 올라갈수록 가격은 비싸지고 속도가 빨라지며 용량은 작아진다. 캐시 데이터를 미리 복사해 놓는 임시 저장소이자 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리이다..
CPU(Central Processing Unit) 제어장치, 레지스터, 산술논리연산장치로 구성되어 있다. 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행한다. 관리자 역할을 하는 운영체제의 커널이 프로그램을 메모리에 올려 프로세스로 만들면 일꾼 역할의 CPU가 이를 처리한다. 제어장치(CU, Control Unit) 프로세스 조작을 지시하는 CPU의 한 부품이다. 입출력장치 간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정한다. 레지스터 CPU 안에 있는 매우 빠른 임시기억장치이다. CPU와 직접 연결되어 있어 연산 속도가 메모리보다 훨씬 빠르다. CPU는 자체적으로 데이터를 저장할 방법이 없어서 레지스터를 거쳐 데이터를 전달한다. 산술논리연산장치(ALU Ar..
운영체제(OS, Operating System)란? 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스이다. 하드웨어와 소프트웨어를 관리하고 한정된 메모리나 시스템 자원을 효율적으로 분배해준다. 운영체제의 역할 CPU 스케줄링과 프로세스 관리 CPU 소유권을 프로세스에 할당하고, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다. 메모리 관리 한정된 메모리를 프로세스에 할당한다. 디스크 파일 관리 디스크 파일을 어떠한 방법으로 보관할지 관리한다. I/O 디바이스 관리 마우스나 키보드같은 I/O 디바이스와 컴퓨터 간에 데이터를 주고 받는 것을 관리한다. 운영체제의 구조 유저 프로그램과 하드웨어 사이에 [GUI, 시스템콜, 커널, 드라이버]의 구조로 되어있다. GUI가 없고 CUI만 있는 리눅스 서버도 있..
- Total
- Today
- Yesterday
- 코틀린
- 디자인 패턴
- 네트워크
- 세컨더리인덱스
- 프로세스와 스레드
- 프로그래밍
- 인덱스최적화
- 메모리 계층
- 캐시매핑
- 직접매핑
- 직접연관매핑
- 연관매핑
- 프로세스
- 프로세스 컴파일
- 함수형 프로그래밍
- java
- 중첩루프조인
- 자바
- 클러스터형인덱스
- 대수확장성
- 프로그래밍 패러다임
- 선언형 프로그래밍
- 보이스코드정규형
- 스프링 R2DBC
- 스레드
- 스프링 WebFlux
- 불연속할당
- 네트워크 기초
- 정렬병합조인
- Design Pattern
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |