| 니앙팽이 - 컴퓨터 구조 | 캐시 Cache
·
CS/OS
Cache 주소가 키로 주어졌을 때 그 공간에 즉시 접근할 수 있다는 것은캐시가 하드웨어로 구현한 해시 테이블(Hash table)과 같다는 의미다.📄 1. 캐시가 생긴 이유. 1). 캐시 생성의 배경 프로세서(CPU)는 날마다 빨라지는데.. 메모리(DRAM)의 속도는 너무 더디다. CPU와 Memory간 Read/Write에 생기는 병목이 Memory Wall 이라고 한다.따라서, CPU내부에 L1, L2캐시를 두고 Memory에는 L3 캐시를 두어 속도를 개선하여빠른 데이터 접근이 가능하다.만약 어디있는지 모른다면 O(N)만큼 걸릴것이다.하지만, 어디있는지 알기만 하면, 예측할 수 있다면 시간은 적게 걸릴것 이다.또한 알고 있다 하더라도, 페이지라는 단위로 관리되어 (SSD -> RAM)으로 적재할..
| 니앙팽이 - 멀티스레딩 | 7 | Blocking I/O & NonBlocking I/O 그리고 Synchronous & Asynchronous
·
CS/OS
7. IO-Bound & CPU-Bound 📄 1. 사전에 염두해야 하는 용어 1). 작업 요청자와 결과 제공자의 관계 ① IO (Input / Output) Bound 작업에서 작업 요청자 : 소프트웨어 애플리케이션System Call을 IO 장치 호출하는 SideSystem Call 호출은 CPU Bound 이다.결과 제공자 : OS, Hardware, IO DiviceSystem Call에 대한 결과를 제공하는 측이고 "IO Completion Port (완료 포트)"를 통해 CPU에 전달한다.사용가능한 결과를 만드는 작업은 DMA나 하드웨어 인터럽트 같은 매커니즘으로 OS나 하드웨어에 의해 IO Bound 작업이 수행된다.절대로 이 결과를 생성하는데 까지 CPU Bound 작업이 아니다!Inte..
| 니앙팽이 - 멀티스레딩 | 6 | 스레드
·
CS/OS
⏱️ 6. 스레드 ① 스레드간 공유가능한 데이터프로세스 ID : 메타데이터파일 : 애플리케이션이 읽고 쓰기위해 여는 파일. 코드 : CPU에서 실행되는 프로그램의 명령어 힙(Data) : 애플리케이션에 필요한 데이터② 스레드간 공유 되지 않는 데이터스택 : 메모리영역 지역 변수, 함수레지스터 PC : 명령 포인터📄 1. 스레드 CPU에서 실행되며, 프로세스보다 더 작은 "최소 수행단위" 하나의 프로세스에는 동시에 실행되는 여러개의 스레드가 존재함위의 설명 그대로 코드 수행를 하는 최소 수행 단위 이며, 프로세스보다 더 적은 비용을 사용한다.그 이유는 프로세스의 자원을 일부 공유를 하고, 개별적인 자원이 프로세스보다 더 적기 때문.생성과 삭제가 빠르고, Process Context Switcing VS ..
| 니앙팽이 - 멀티스레딩 | 5 | 성능 평가 척도
·
CS/OS
⏱️ 5. 성능 평가 척도 앱 성능에 대한 두가지 기준 (지연 시간 & 처리량) 성능은 시나리오와 용례에 따라 완전히 다르게 측정될 수 있습니다.병행 실행의 가지가 있는지 없는지는 다음 요소를 확인해 봐야한다.① Latency (지연시간) : Data Parallelism 하나의 큰 작업을 SubTask로 나눠서 병렬로 진행할때 주로 사용한다Ex). 연산, 정렬, 분할정복② Throughput (단위시간당 처리량) : Task parallelism 작업간 서로 별로 연관이 없는 독립적인 Job을 처리할때 사용함Ex). 비동기 I/O, 네트워크, DB📄 1. 지연시간 (Latency) : 하나의 Task(작업)을 처리하는 시간 1). Optimize Latency 멀티 스레딩으로 지연시간의 최적화를 달성..
| 니앙팽이 - 멀티스레딩 | 4 | 프로세스
·
CS/OS
⏱️ 4. 프로세스 📄 1. 프로세스의 PCB 구성 요소 PCB 구성 요소설명① 프로세스 식별자 (PID)② 프로세스 이름③ 프로세스 상태 정보1. 준비, 실행, 대기, 종료 2. 프로그램카운터 (PC) : 다음에 실행할 명령어 주소 3. CPU 레지스터 값④ 가상 메모리 정보가상 메모리와 실제 메모리 매핑 정보⑤ 스케쥴링 정보1. 우선순위 2. CPU 점유 시간 3. 프로세스가 입출력 작업을 완료할 때까지 대기해야하는 정보⑥ 자원의 타입1. CPU 점유 시간 2. 메모리 공간 3. I/O 장치📄 2. 프로세스 상태 & 상태 전이 상태 (Node) & 상태 전이 (Arrow) 1). 상태 상태설명① 생성 (new)1. "Ready" 상태로 이동하기 전의 초기화 단계 2. PCB 생성② 준비 (Rea..
| 니앙팽이 - 멀티스레딩 | 3 | 프로그램을 처리하는 발전 흐름
·
CS/OS
⏱️ 3. 프로그램을 처리하는 발전 흐름 프로세스는 활동 단위다. 운영체제로부터 시스템 자원을 할당받는 활동의 단위프로세스는 운영체제에 의해 메모리 공간과 CPU 자원을 할당 받는다.📄 1. 프로세스 처리 발전흐름 ① 다중 프로그래밍 시스템 (Multi Programming) 여러 프로세스를 메모리에 올려놓을 수 있지만 동시또는 병렬적이지는 않음.한 프로세스가 모두 실행되야 다음 프로세스가 실행된다. #1 대기시, #2 실행#1 에 I/O 작업실행시 대기상태로 가지만, 그래도 Non-Blocking I/O (파일, 네트워크통신, 마우스키보드 입출력 장치)② 시분할 처리 시스템 (Multi Tasking) 드디어 프로세스의 동시성(Concurrency) 실행 가능하고 빠른 응답성의 장점을 얻음점유시간을..
| 니앙팽이 - 멀티스레딩 | 2 | OS가 메모리를 관리하는 방법
·
CS/OS
⏱️ 2 OS가 메모리를 관리하는 방법 📄 1. OS 설명이미지① 전제로 일단 프로세스가 실행될때, 아무곳에나 메모리를 무작정 접근할 수 없다.② 만약 접근하게 되는 일이 생긴다면 접근을 시도하는 프로세스를 OS에서 Inturrupt를날리고 강제로 종료한다. 그 메세지는 익히 아는 segment fault (core dumped) ③ 따라서 실행되려면 프로세스가 메모리를 OS에게 요청해야 됨. OS가 ReadWrite할 수 있는 공간을 할당해준다.📄 2. Memory Fragmentation 빈 메모리가 있지만 사용할 수 없어 메모리가 낭비된다는 공통점이 있다. 단편화 때문에 새로 할당할 크기에 맞는 메모리를 찾으러 하나하나씩 탐색하는 과정으로 힙 메모리가 느린것에 한몫한다.일반적으로 스택은 높..
| 니앙팽이 - 멀티스레딩 | 1 | 스택과 힙
·
CS/OS
⏱️ 1 스택과 힙 📄 1. 두 메모리간 비교 1 뭘 저장하나?, 2 속도 (접근, 생성해제)?, 3 데이터 접근법, 공유 범위?,4 최대 할당 사이즈는?, 5 메모리 관리비교Stack : 정적 메모리Heap : 동적 메모리① 저장 하는 것함수내 지역변수, 매개변수, this 매개변수 참조변수(주소값)함수/메소드 호출 정보(Stack프레임)객체 그 자체 저장(객체 멤버 변수들도) (new)② 속도 (생성과 해제 & 데이터 접근)빠르다.느리다③ 접근 방법과 공유 가능성1. LIFO 순서 2. 함수내 블럭에서만 접근 가능1. 무작위 접근 2. 프로그램간 공유가 가능하다.④ 최대 할당 사이즈1. 컴파일 타임에 사이즈 제한2. arr[]와 같은 문법3. 약 1M 혹은 500M정도 작다.1. 고정 크기가 없지만..
| 니앙팽이 - 멀티스레딩 | 0 | 하드웨어와 캐시 메모리
·
CS/OS
⏱️ 0. 하드웨어 📄 1. 프로세서(CPU) : 명령어 처리를 위한 하드웨어 1). CU (Control Unit) 프로세스 형태로 메모리에 올라간 명령어 주소들중PC, IC가 가르키는 주소의 Instruction code를 "인출, 해독"한다.명령어 실행에 필요한 "제어 신호" RAM, ALU, I/O에 보내는 장치2). ALU 연산을 수행하는 장치3). Register RAM이외에 CPU내부에 내장된 기억장치, 엑세스 속도가 가장 빠름Instruction Register (IR)프로세스 형태로 메모리에 올라간 명령어들 중 현재 수행중인 명렁어를 저장한다Program Counter (PC)6502에선 16bit 레지스터로프로세스 형태로 메모리에 올라간 명령어들 중 다음에 수행해야 하는 명렁어를 저장..