| 니앙팽이 - 멀티스레딩 | 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 레지스터로프로세스 형태로 메모리에 올라간 명령어들 중 다음에 수행해야 하는 명렁어를 저장..
| 니앙팽이 - IoC Container | 2 | 의존성 주입과 제어권 역전 (Dependency Injection & Inversion of Contol)
·
CS/SW 공학
♽ 1. DI & IoC 📄 1. 의존성 주입/관계 주입 (Dependency Injection) 의존 관계를 가지는 방법은 다음 경우가 있겠다. "A.cs 내에서 new()를 통한 객체 생성으로 의존 관계"를 만들수도 있지만. "new()객체를 다른 외부의 코드 B.cs에서 생성하고 A.cs에 주입(객체 전달)"을 하는 방식이 있겠다. 대표적으로 생성자를 통해서, Setter함수를 통해서, 인터페이스 Setter로 일괄 처리가 가능할 수도 있겠다. 여기서 DI(의존성 주입) 이라 함은 후자의 방식이 되겠다. 즉, 1). Injection : 주입을 한다? Caller/Client(A.cs)에서 Service(인스턴스)를 생성하는게 아니라 Injector(B.cs)라는 외부 클래스에서 주입 되는 방식. ..
| 니앙팽이 - IoC Container | 1 | 의존 역전 원칙 (Dependency Inversion Principle)
·
CS/SW 공학
♽ 0. Dependency Inversion 📄 1. 용어 1). Dependency : 의존성이란? 한 클래스가 다른 클래스를 참조할때 의존성이 있다고 말할 수 있다. A는 B에 의존적이다 Diagram A가 B를 멤버로 가지고 있거나A메소드에서 B를 패러미터로 이용하거나 리턴한다던지.B의 메소드를 사용한다던지어쨌든 A에서 B를 사용하면~ 2). DIP (Dependency Inverse Principle) 좌 : DIP없이 의존한 관계, 우 : DIP를 적용해 추상적인 개념에 의존함 ⓐ 의존 역전 원칙 이란? 구체적인 타입에 직접 참조(의존)를 하는것이 아닌 추상적인 타입을 참조(의존)하자라는 것. (Depend upon abstractions, Do not depend on concrete) 즉,..
| 니앙팽이 - DB | 9 | SQL - DCL(데이터 제어어)
·
CS/DB
9 DCL 데이터 제어어 # SecuIntegrecover 병 🤣 데이터의 보안,무결성,회복, 병렬 제어를 정의하는데 사용하는 언어다. 1. GRANT / REVOKE /****************************************************** * 기본형 ******************************************************/ GRANT {ALL, SELECT, INSERT, DELETE, UPDATE, ALTER} ON _TABLE_ TO _USER_ID_ [WITH GRANT OPTION]; REVOKE {ALL, SELECT, INSERT, DELETE, UPDATE, ALTER} ON _TABLE_ FROM _USER_ID_ [CASCADE]; /..