일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ip
- 인사이드아웃
- 프로젝트캠프
- typescript
- react-query
- 스레드
- 해시
- javascript
- App Runner
- 프로세스
- IT개발캠프
- 유데미
- Algorithm
- 리액트
- 개발자부트캠프
- CS
- cs #네트워크
- 자바스크립트
- 타입스크립트
- 프로그래머스
- html
- 메모리
- React.js
- react
- BFS
- 네트워크
- #프로젝트캠프 #프로젝트캠프후기 #유데미 #스나이퍼팩토리 #웅진씽크빅 #인사이드아웃 #IT개발캠프 #개발자부트캠프 #리액트 #react #부트캠프 #리액트캠프
- 웅진씽크빅
- 스나이퍼팩토리
- 알고리즘
- Today
- Total
목록CS (18)
Bin's Blog
들어가며 지난 시간에는, 스레드와 멀티스레딩에 대해서 살펴 보았다. 오늘은 프로세스와 스레드 마지막편이다. 공유 자원과 임계 영역과 교착 상태에 대해서 알아보려고 한다. 공유 자원과 임계 영역이 서로 어떤 연관성이 있는지를 이번 포스팅을 통해서 알아보려고 한다. 공유 자원 공유 자원은 시스템 안에서 프로세스, 스레드가 함께 접근할 수 있는 모니터, 프린터, 메모리, 파일, 데이터 등 자원이나 변수 등을 의미한다. 이 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태라고 한다. 동시에 접근을 시도할 때 접근의 타이밍이나 순서 등이 결괏값에 영향을 줄 수 있다. 공유 자원은 효율적으로 리소스 사용을 가능하게 하지만, 동기화 문제를 해결하지 않으면 안정성이나 성능 문제로 이어질 수 있..
글의 시작 오늘 다루는 주제는 지난 시간 멀티프로세싱을 다뤘으니, 간단하게 스레드와 멀티스레딩에 대해서 살펴보고 가려고 한다. 자바스크립트를 처음에 공부했을 때 "자바스크립트는 메인 스레드인 이벤트 루프가 싱글 스레드라서 싱글 스레드 언어라고 부른다."라는 말을 자주 들었다. 그럼 스레드가 무엇인지 더 나아가서 멀티스레딩이 무엇인지 알아보면서 궁금증을 해소해 보자. 스레드 스레드는 프로세스의 실행 가능한 가장 작은 단위이다. 프로세스는 여러 스레드를 가질 수 있다. 코드, 데이터, 스택, 힙을 각각 생성하는 프로세스와는 달리 스레드는 코드, 데이터, 힙은 스레드끼리 서로 공유한다. 그 외의 영역은 각각 생성된다. 멀티스레딩 멀티스레딩은 프로세스 내 작업을 여러 개의 스레드, 멀티스레드로 처리하는 기법이며..
PCB PCB(Process Control Block)는 운영체제에서 프로세스에 대한 메타데이터를 저장한 "데이터"를 말한다. 프로세스 제어 블록이라고도 한다. 프로세스가 생성되면 운영체제는 해당 PCB를 생성한다. 프로그램이 실행되면 프로세스가 생성되고 프로세스 주소 값들에 앞서 설명한 스택, 힙 등의 구조를 기반으로 메모리가 할당된다. 그리고 이 프로세스의 메타데이터들이 PCB에 저장되어 관리된다. 이는 프로세스의 중요한 정보를 포함하고 있기 때문에 일반 사용자가 접근하지 못하도록 커널 스택의 가장 앞부분에서 관리된다. PCB의 구조 PCB는 프로세스 스케줄링 상태, 프로세스 ID 등의 다음과 같은 정보로 이루어져 있다. 프로세스 스케줄링 상태: "준비", "일시중단"등 프로세스가 CPU에 대한 소유..

프로세스의 상태 프로세스의 상태는 여러 가지 상태 값을 갖는다. 생성 상태 생성 상태(create)는 프로스세스가 생성된 상태를 의미하며 fork() 또는 exec() 함수를 통해 생성한다. 이때 PCB가 할당된다. fork() fork()는 부모 프로세스의 주소 공간을 그대로 복사하며, 새로운 자식 프로세스를 생성하는 함수이다. 주소 공간만 복사할 뿐이지 부모 프로세스의 비동기 작업 등을 상속하지는 않는다. exec() exec()은 새롭게 프로세스를 생성하는 함수이다. 대기 상태 대기 상태는 메모리 공간이 충분하면 메모리를 할당받고 아니면 아닌 상태로 대기하고 있으며 CPU 스케줄러로부터 CPU 소유권이 넘어오기를 기다리는 상태이다. 대기 중단 상태 대기 중단 상태는 메모리 부족으로 일시 중단된 상태..
프로세스(process)는 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링이 대상이 되는 작업이라는 용어와 같은 의미로 쓰인다. 스레드는 프로세스 내 작업의 흐름을 지칭한다. 앞의 그림처럼 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어나고, 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행된다. 프로세스와 컴파일 과정 프로세스는 프로그램이 메모리에 올라가 인스턴스화된 것을 말한다. 예를 들어 프로그램은 구글 크롬 프로그램과 같은 실행 파일이며, 이를 두 번 클릭하면 구글 크롬 프로세스로 변환되는 것이다. 프로그램을 만드는 과정은 만드는 언어마다 다를 수 있으며 C 언어 기반의 프로그램을 기준으로 설명하면 컴파일러가 컴파일 과정을 통해 컴퓨터가 이해할 수있는 기계어..
지난 시간에 이어서 메모리 관리에 대해서 계속 살펴보고자 한다. 메모리 할당 메모리에 프로그램을 할당할 대는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 할당하는데, 연속 할당과 불연속 할당으로 나뉜다. 연속 할당 연속 할당은 메모리에 연속적으로 공간을 할당하는 것을 말한다. 앞의 그림처럼 프로세스 A, 프로세스 B, 프로세스 C가 순차적으로 공간에 할당하는 것을 볼 수 있다. 이는 메모리를 미리 나누어 관리하는 고정 분할 방식과 매 시점 프로그램의 크기에 맞게 분할하여 사용하는 가변 분할 방식이 있다. 고정 분할 방식 고정 분할 방식은 메모리를 미리 나누어 관리하는 방식이며, 메모리가 미리 나뉘어 있기 때문에 융통성이 없다. 또한, 내부 단편화가 발생한다. 가변 분할 방식 가변 분할 방식은 매 ..
운영체제의 대표적인 할 일 중 하나가 메모리 관리이다. 컴퓨터 내의 한정된 메모리를 극한으로 활용해야 하는 것이다. 가상 메모리 가상 메모리(Virtual Memory)는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것을 말한다. 이때 가상적으로 주어진 주소를 가상 주소(local address)라고 하며, 실제 메모리상에 있는 주소를 실제 주소(phsyical address)라고 한다. 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환되며, 이 덕분에 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 된다. 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있고 프로세스의 주소 정보가..

메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있습니다. 레지스터: CPU 안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적다. 캐시: L1, L2 캐시를 지칭한다. 휘발성, 속도 빠름, 기억 용량이 적다. 참고로 L3 캐시도 있다. 주기억장치: RAM을 가리킨다. 휘발성, 속도 보통, 기억 용량이 보통이다. 보조기억장치: HDD, SDD를 일컬으며 뷔히발성, 속도 낮음, 기억 용량이 많습니다. 참고로 SDD는 사이즈가 작아서 주로 노트북 탑재, HDD는 컴퓨터 기기에 탑재한다. 램은 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하고 이를 필요 시마다 CPU에 빠르게 전달하는 역할을 한다. 계층 위로 올라갈수록 가격은 비싸지는데 용량은 작아지고 속도는 빨라지는..

컴퓨터는 CPU, DMA 컨트롤러, 메모리, 타이머, 디바이스 컨트롤러 등으로 이루어져 있다. CPU CPU(Central Processing Unit)는 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치를 말하며, 인터럽트에 의해 단순히 메모리에 존재하는 명령어를 해석해서 실행하는 일꾼이다. 운영체제 커널이 프로그램을 메모리에 올려 프로세스로 만들면 일꾼인 CPU가 이를 처리한다. 제어장치 제어장치(CU, Control Unit)은 프로세스 조작을 지시하는 CPU의 한 부품이다. 입출력장치 간 통신을 제어하고 명령어들을 읽고 해석하며 데이터 처리를 위한 순서를 결정한다. 레지스터 레지스터는 CPU 안에 있는 매우 빠른 임시기억장치를 가리킨다. CPU와 직접 연결되어 있으므로 연산 속도가..

앞으로는 하드웨어와 소프트웨어(유저 프로그램)를 관리하는 일꾼인 운영체제와 CPU, 메모리 등으로 이루어진 컴퓨터를 알아보겠다. 운영체제의 역할 운영체제의 역할은 크게 네 가지가 있다. 1. CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다. 2. 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리한다. 3. 디스크 파일 관리: 디스크 파일을 어떠한 방법으로 보관할지 관리한다. 4. I/O 디바이스 관리: I/O(입출력) 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리한다. 운영체제의 구조 운영체제의 구조는 다음과 같다. 유저 프로그램이 맨 위에 있고 그 다음으로 GUI, 시스템..