일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 315. Count of Smaller Numbers After Self
- shiba
- 파이썬
- 밴픽
- 운영체제
- Python Implementation
- Class
- attribute
- 30. Substring with Concatenation of All Words
- Substring with Concatenation of All Words
- 컴퓨터의 구조
- Decorator
- Python Code
- Protocol
- 109. Convert Sorted List to Binary Search Tree
- iterator
- Regular Expression
- 시바견
- 43. Multiply Strings
- Python
- kaggle
- data science
- concurrency
- t1
- 715. Range Module
- DWG
- Convert Sorted List to Binary Search Tree
- Generator
- 프로그래머스
- LeetCode
- Today
- Total
Scribbling
컴퓨터의 구조 - 9 본문
1. 멀티태스킹: 컴퓨터가 한 번에 둘 이상의 작업을 수행하는 것. 과거에는 CPU가 하나여서 여러 작업을 동시에 수행하는 척만 했다면, 이제는 멀티코어 프로세서가 대세가 되어 컴퓨터가 실제로 한 번에 둘 이상의 일을 하고 있다.
- 경합 조건과 락: 일부 연산에 대하여 근본적으로 멀티태스킹을 막아야 한다.
- 프로세스: 프로세스 (Process)는 사용자 공간 (User Space)에서 실행되는 프로그램이다. 멀티코어 시스템에서는 여러 프로그램이 병렬로 실행될 수 있다.
- 스레드: 스레드 (Thread)는 정적인 데이터와 힙을 공유하지만 자체적으로 스택을 갖는 프로그램의 일부분을 말한다. 한 스레드에서 다른 스레드로 실행이 넘어갈 때는 스레드 스케줄러 (Thread Scheduler)가 CPU 레지스터를 저장해야 한다. 스레드는 일반 프로세스보다 저장할 컨텍스트 크기가 훨씬 작기 때문에 프로세스 문맥 전환보다 더 빠르다. 이러한 스레드를 통해 액티비티 핸들러 (Activity Handler)를 인터럽트 할 수 있는 시스템이 구현 가능하다.
참고할만한 주소: https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
2. 락/트랜잭션/락 대기
- 락: 중요한 부분을 상호 배제 (Mutual Exclusion) 메커니즘을 통해 인터럽트 불가능하도록 함.
- 트랜잭션 (Transaction): 트랜잭션으로 묶여 있는 모든 연산은 모두 성공하거나 모두 실패한다. 각 연산을 독립적으로 수행하는 것이 아니라, 한번에 묶어서 처리한다.
- 락 대기: 여러 프로그램이 락을 기다리는 동안 프로그램이 다른 일을 할 수도 있고, 중단될 수도 있다. 블로킹 (Blocking) 시스템은 시스템이 락을 할당할 때까지 락을 요청한 프로그램을 일시중단하며, 논블로킹 (non-Blocking) 시스템은 프로그램이 계속 실행되고 나중에 락의 획득 여부를 통지 받는다.
1. 용어
- 루트킷 (rootkit): 시스템의 전반을 접근 가능한 루트 권한을 얻게 해주는 도구.
- 하드 코딩: 시스템적으로 사용하는 변수를 변수를 사용하지 않고, 코드에 직접 박아둔 코딩 방식. 코드가 바뀌면 나중에 버그를 일으킬 가능성이 매우 큼.
- DOS (Denial of service) / DDOS (Distributed Denial of Service): 서비스 과부화를 유발하여 정당한 고객이 서비스를 받지 못하도록 하는 방식의 공격.
- 인증 (Authentification): 어떤 사람이나 대상이 실제로 그 사람이나 대상임을 증명.
- 권한 부여 (Authorization): 제대로된 자격증명 (Certificate)을 제공하는 사람에게만 접근을 허용.
- 공개키 암호 (Public Key Cryptography): 누군가 공개키로 암호화한 암호문은 비밀키로만 복호화 가능.
- 전방향 안전성 (Forward Secrecy): 전방향 안전성 암호화는 각 메시지마다 세션 키를 새로 만듦.
- 디지털 서명 (Digital Signature): 데이터가 진본임을 검증 가능하며, 정합성, 부인방지, 인증을 제공함. 데이터의 암호학적 해시값을 계산하여 데이터에 추가하는 방식으로 정합성이 검증됨.
- 공개키 인프라스트럭처 (PKI; Public Key Infrastructure): 은행은 자신의 공개키를 브라우저에 전송하고, 브라우저는 은행만 데이터를 복화할 수 있도록 은행 공개키를 사용해 데이터를 암호화한다. 이 때, 은행에서 온 공개키가 실제로 은행에서 보낸 것임을 어떻게 알 수 있을까? 이러한 역할을 하는 시스템이 바로 PKI이다. 이 인프라에는 신뢰 가능한 제 3자인 인증기관 (CA; Certificate Authority)가 있어서 키가 어떤 당사자의 것임을 인증하여준다.
- 블록체인 (Blockchain): 블록체인에서 블록은 장부의 한줄과 같다. 블록체인에서 새 블록을 만들 때에는 이전 블록에 대한 암호학적 해시와 블록 생성 시간을 추가한다. 때문에 블록이 체인처럼 연결된 것처럼 보인다. 임의의 블록의 내용을 변경하면, 해당 블록의 해시가 바뀌기 때문에 그 다음 블록에 저장된 해시와 일치하게 되지 않는다는 점이 핵심이다.
'Computer Science > Computer Knowledge' 카테고리의 다른 글
운영체제 - 2 (0) | 2021.09.27 |
---|---|
운영체제 - 1 (2) | 2021.09.17 |
컴퓨터의 구조 - 8 (0) | 2021.09.07 |
컴퓨터의 구조 - 7 (0) | 2021.09.06 |
컴퓨터의 구조 - 6 (0) | 2021.09.05 |