| 니앙팽이 - 컴퓨터 구조 | 캐시 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)으로 적재할..
여러 PPT 파일들을 PDF로 인쇄하는 자동화 코드 작성하기
·
📄 1. 문제 개요다음 ppt들은 인프런의 Backend 멀티쓰레드 이해하고 통찰력 키우기 강좌에 첨부된 파일들 이지만,이걸 pdf로 보고 싶었다, 그런데 14장이나 되는 ppt를 일일이 pdf로 열었다 닫았다 하는건 너무~ 노가다임이걸 CLI를 통해 Shell 코드로 자동화 할 수 없을까? 해서.. 찾아 보게 되었다.본인의 컴퓨터는 mac이고, "MS Office Powerpoint"의 cli를 찾아보기로 했지만,딱히 만족스러운 결과가 나오지는 않았다..📄 2. LibreOffice검색을 하다보니 "LibreOffice" 라는 프로그램을 발견했다.오픈소스이고 Linux, Max, MicroSoft 모든 플랫폼을 지원한다.무엇 보다도 CLI를 제공해 쉘 스크립팅으로 자동화 하기 딱 알맞았다.1). ...
| 니앙팽이 - 멀티스레딩 | 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..
맥 바탕화면 (Desktop) 파일,폴더들이 계속 숨겨질때.
·
1. 개요맥을 재시작 할때마다 바탕화면에 있는 파일,폴더가 어느새 부터 깔끔하게 사라져 있다.그렇다고 파일이 삭제된 것은 아니고, 사라지는 현상이 계속 발생했다는 말이다.맥에서 숨겨진 파일을 확인할때 그냥 finder에 아무데나 한번 클릭하고 다음 단축키를 눌러보자.command(⌘) + shift(⇧) + 점(.)그런데 맥에서는 어떻게 숨겨진 파일을 다시 돌릴 수 있을까?2. chflags [no]hidden 쉘 스크립트를 사용해 보자일단 맥에서는 GUI로 파일 숨기고, 표시하기 기능이 없는듯하다.(?)그리고, 파일이 한개만 있는게 아니라 몇십개 있을 수 있는데. 이걸 일일히 하나하나 선택해서 보여지게 하는건 너무 비효율적이다.따라서, 쉘 스크립트로 cli를 자동화 해보자.로직1. 반드시 숨겨야 하는..
| 니앙팽이 - 멀티스레딩 | 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. 고정 크기가 없지만..