일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 앱개발
- 디자인 패턴
- 프로세스
- 코틀린
- github
- 안드로이드 디자인 패턴
- React
- 앱
- 안드로이드 개발
- MVVM
- 디자인패턴
- db
- 스레드
- 리액트
- CS지식
- Operating System
- 운영체제
- Kotlin
- Database
- 메모리
- cs
- 리액트네이티브
- Android
- 개발
- 앱 개발
- 안드로이드
- reactnative
- OS
- 액티비티
- 데이터베이스
- Today
- Total
목록Operating System (18)
Tech Log
PCB(Process Control Block, 프로세스 제어 블록) 운영체제에서 프로세스에 대한 메타데이터를 저장한 데이터를 말한다. 다시 말해, 프로세스를 실행하는 데 필요한 중요한 정보를 보관하는 자료 구조이다. 프로세스는 고유의 프로세스 제어 블록을 가진다. *메타데이터 : 데이터에 관한 구조화된 데이터이자 데이터를 설명하는 작은 데이터. 대량의 정보 가운데에서 찾고 있는 정보를 효율적으로 찾아내서 이용하기 위해 일정한 규칙에 따라 콘텐츠에 부여되는 데이터. 프로세스 생성 시 만들어져서 프로세스가 실행을 완료하면 폐기한다. 프로그램이 실행되면 프로세스가 생성되고, 프로세스 주소 값들에 스택, 힙 등의 구조를 기반으로 메모리가 할당된다. 이 프로세스들의 메타데이터들이 PCB에 저장되어 관리된다. P..
프로세스는 여러 가지 상태 값을 가진다. 생성 상태(create) 프로세스가 생성된 상태를 말한다. 프로세스가 메모리에 올라와 실행 준비를 완료한 상태가 된다. fork(), exec() 함수를 통해 생성한다. 이때 PCB가 할당된다. 생성된 프로세스는 바로 실행되는 것이 아니라, 준비 상태에서 자기 순서를 기다리며 PCB도 같이 준비 상태로 옮겨진다. *PCB(Process Conrtol Block) : 프로세스 제어 블록, 운영체제가 해당 프로세스를 위해 관리하는 자료 구조를 말한다. fork() 부모 프로세스의 주소 공간을 그대로 복사하여, 새로운 자식 프로세스를 생성하는 함수. 주소 공간만 복사할 뿐, 부모 프로세스의 비동기 작업 등을 상속하지는 않는다. exec() 새롭게 프로세스를 생성하는 함..
프로세스(process) 컴퓨터에서 실행되고 있는 프로그램. 실행을 위해 메모리에 올라온 동적인 상태이다. CPU 스케줄링의 대상인 작업(task)과 거의 같은 의미를 가진다. * 스레드(thread) : 프로세스 내 작업의 흐름 프로그램의 실행 과정 프로그램은 메모리에 올라가면서 실행된다. 프로그램이 메모리에 올라가면 프로세스가 된다. 이때 프로그램은 인스턴스화가 된다. 프로세스는 CPU 스케줄러에 따라 순서에 맞게 실행된다. 프로세스와 컴파일 과정 프로그램은 컴파일러가 컴파일 과정을 거친 후, 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 되는 것이다. 이 프로그램은 C 언어 기반의 프로그램이며, 인터프리터 언어로 된 프로그램과는 다르다. 1. 전처리 소스 코드의 주석을 제거하고,..
메모리가 한정되어 있으므로 스와핑이 많이 일어나며 이러한 스와핑은 많이 일어나지 않도록 설계되어야 한다. 스와핑은 페이지 교체 알고리즘을 기반으로 일어난다. 오프라인 알고리즘(offline algorithm) 먼 미래에 참조되는 페이지와 현재 할당하는 페이지를 바꾸는 알고리즘. 가장 좋은 방법이나 미래에 사용되는 프로세스를 우리는 알 수 없기 때문에 사용할 수 없는 알고리즘이다. 다른 알고리즘과의 성능 비교에 대한 기준으로 사용한다. FIFO(First In First Out) 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법 LRU(Least Recentle Used) 참조가 가장 오래된 페이지를 바꾼다. 이 오래된 것을 파악하기 위해 각 페이지마다 계수기(counter), 스택을 두어야 하는 ..
메모리에 프로그램을 할당할 때는 시작 메모리 위치, 메모리의 할당 크기를 기반으로 한다. 할당 방식은 연속 할당과 불연속 할당으로 나뉜다. 연속 할당 메모리에 연속적으로 공간을 할당하는 것이다. 프로세스를 순차적으로 공간에 할당한다. 연속 할당은 고정 분할 방식과 가변 분할 방식으로 나뉜다. 고정 분할 방식(fixed partition allocation) 메모리를 미리 나누어 관리하는 방식. 큰 프로세스가 메모리에 올라오면 여러 조각으로 나누어서 배치한다. 장점 : 메모리를 일정한 크기로 나누어 관리하므로 메모리 관리가 수월하다(가변 분할 방식의 메모리 통합같은 부가적인 작업을 할 필요가 없다) 단점 : 메모리가 미리 나뉘어 있으므로 융통성이 없다. 또한 내부 단편화가 발생한다. *내부 단편화(inte..
가상 메모리(virtual memory) 메모리 관리 기법 중 하나로, 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 사용자들에게 매우 큰 메모리로 보이게 하는 것. 가상적으로 주어진 주소를 가상 주소(logical address) 실제 메모리 상에 있는 주소를 실제 주소(physical address) 가상 주소는 메모리관리장치(MMU)에 의해 실제 주소로 변환 이를 통해 사용자는 실제 주소를 의식할 필요 없이 프로그램을 구축할 수 있게 된다. 가상 메모리는 가상 주소와 실제 주소가 매핑되어 있으며, 프로세스의 주소 정보가 들어 있는 페이지 테이블로 관리된다. 이때 속도 향상을 위해 TLB를 사용한다. *TLB : 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시. 페이지 테이블에 있는 리스트..
캐시 데이터를 미리 복사해 놓는 임시 저장소이자, 빠른 장치와 느린 장치의 속도 차이에 따른 병목 현상을 줄이기 위한 메모리. 캐시를 통해 데이터를 접근하는 시간이 오래 걸리는 경우를 해결하고, 무언가를 다시 계산하는 과정을 생략하여 시간 절약할 수 있다. 캐싱을 할 때는 자주 사용하는 데이터를 기반으로 캐시를 직접 설정한다. 이때 자주 사용하는 데이터의 기준은 지역성으로 정한다. 지역성은 시간 지역성(temporal locality)과 공간 지역성(spatial locality)으로 나뉜다. 시간 지역성 최근 사용한 데이터에 다시 접근하려는 특성. for(i in 0..10){ arr[i] = i } 위와 같은 코드에서 시간 지역성을 기준으로 자주 사용하는 데이터는 i가 된다. 공간 지역성 최근 접근한..
메모리 계층 휘발성 메모리 레지스터 : CPU 안에 있는 작은 메모리, 속도 가장 빠름, 기억 용량이 가장 적다 캐시 : L1, L2 캐시를 지칭하나 L3 캐시도 있다. 속도 빠름, 기억 용량이 적다 주기억장치 : RAM을 가리킨다. 속도 보통, 기억 용량이 보통. 하드디스크로부터 일정량의 데이터를 복사해서 임시 저장하고 이를 필요할 때마다 CPU에 빠르게 전달하는 역할 레지스터 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 저장장치. CPU 내에 있으므로 가장 빠르다. 캐시 메모리와 CPU 간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소. 필요한 데이터를 모아 한꺼번에 처리하는 버퍼의 일종. CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다..