이번 포스팅에서는 2의 제곱으로 정수를 나눌 때 컴퓨터에서의 결과값과 그 과정을 위해 쉬프트 연산이 사용될 수 있음을 알아보고자 합니다. 2의 제곱으로 정수를 나눌 때는 오른쪽 쉬프트 연산을 사용합니다. 비부호형 정수에는 논리 쉬프트, 부호형 정수에는 산술 쉬프트를 적용합니다. 우측 쉬프트 때 논리 쉬프트는 좌측에 0을 패딩으로 채워 넣고 산술 쉬프트는 MSB(most significant bit)를 패딩으로 반복하여 채워 넣습니다. 컴퓨터에서 정수를 정수로 나누어 정수 결과값을 계산할 때 그 값이 항상 0 방향으로 근사되도록 정의하였습니다. 예로 들어 1.24는 1(floor - 같거나 작은 최근접 정수), -1.24는 -1(ceiling - 같거나 큰 최근접 정수), 0과의 거리가 최소화되도록 근사되..
컴퓨터 시스템에서의 추상화는 각 요소들에게 독립성을 제공해줍니다. 프로세서는 인스트럭션 집합으로 추상화되어 상위 단계에서는 특정한 인스트럭션이 순차적으로 실행될 수 있다는 사실만 이해하면 됩니다. 이러한 추상화 덕분에 동일한 기계어 코드를 다른 프로세서에서도 실행할 수 있게 되었습니다. 소프트웨어 단에서도 운영체제는 입출력 장치를 단순히 파일로 추상화하고 메인 메모리와 디스크를 가상메모리로 추상화합니다. 또한 메인 메모리, 입출력 장치, 프로세서를 프로세스로 추상화합니다. 더 크게 운영체제와 프로세스는 가상 머신(VM)으로 추상화될 수 있습니다.
프로세서 수준의 병렬성 단일 프로세서에서 시분할(Time Sharing) 기법을 사용하여 여러 개의 프로세서를 동시에 실행하는 것처럼, 혹은 여러 명의 사용자가 동시에 시스템을 사용하는 것처럼 느끼도록 할 수 있었습니다. 멀티 프로세서는 하나의 운영체제에 의해 관리되는 여러 개의 프로세서를 의미합니다. 멀티코어프로세서는 멀티 프로세서의 범주에 포함되며 코어(cpu)가 단일 집적회로에 여러 개 집적된 프로세서를 의미합니다. 프로세서 내부에서 코어를 제외한 나머지 하드웨어 자원을 공유합니다. 하나의 코어에서 여러 개의 쓰레드를 동시에 실행하는 하이퍼쓰레딩 기술이 적용될 수도 있습니다. 인스트럭션 수준의 병렬성 프로세서 내부에서 파이프라이닝 기법을 통해 수 클럭이 소요되는 인스트럭션을 동시에 처리할 수 있습니..
운영체제는 응용프로그램과 하드웨어 사이에 있는 시스템소프트웨어입니다. 응용프로그램이 하드웨어를 동일하고 간단한 방식으로 제어할 수 있도록 보조해줍니다. 프로세스는 실행 중인 프로그램이 운영체제에 의해 추상화된 결과물이다. 커널은 프로세스들을 관리하기 위해 메모리에 적재되는 코드와 데이터 집합을 의미한다. 쓰레드는 프로세스를 구성하는 실행 단위이며 쓰레드끼리 코드와 전역데이터를 공유한다. 쓰레드 간의 통신이 프로세스 간의 통신보다 쉬우며 멀티쓰레딩을 통해 프로그램 실행 속도를 증가시킬 수 있다. 가상 메모리는 각각의 프로세스에 독점적으로 할당된 추상화된 메모리를 의미한다. 파일은 연속된 바이트입니다. 모든 입출력장치가 파일로 추상화되며 따라서 응용프로그램은 공통된 방식으로 입출력 하드웨어를 제어할 수 있습..
컴퓨터 시스템의 구조를 관찰하면 컴퓨터는 프로세서와 메모리로 구성되어 있다는 것을 확인할 수 있습니다. 어떠한 작업을 하면 프로세서와 메모리 사이에서 많은 양의 데이터가 여러 번 복사되게 됩니다. 이때 느린 적재(Load), 저장(Store) 시간은 프로그램의 성능을 저하시키는 오버헤드가 될 수 있습니다. 물리학적 법칙에 따라 메모리의 속도는 크기와 반비례하고 비용에 비례합니다. 또한 프로세서의 성능 향상에 비해 메모리의 성능 향상은 상대적으로 느려 속도의 차이가 점점 벌어지고 있습니다. 이러한 상황에서 메모리와 프로세서 간의 데이터 교환 속도를 증가시키기 위해 그 사이에 캐시를 추가하였습니다. 캐시가 성능 향상에 도움을 줄 수 있었던 이유는 프로그램의 지역성(Locality)에 있습니다. 대부분의 프로..
버스는 시스템 내의 배선 집합입니다. 워드 단위로 시스템 내 구성요소 간에 데이터를 전송하는 역할을 담당합니다. 워드는 시스템에서 한 번에 처리하는 데이터의 양을 의미합니다. 시스템마다 워드의 크기가 다를 수 있으며 현재 범용 컴퓨터에서는 64bit를 주로 사용하고 있습니다. 입출력 장치는 시스템과 외부를 연결하는 장치입니다. 컨트롤러와 어댑터, I/O bus로 시스템과 연결됩니다. 메인 메모리는 실행 중인 프로그램의 정보를 저장하는 장치입니다. 물리적으로는 DRAM으로 구현되며 논리적으로 선형적인 바이트 배열로 표현됩니다. 바이트 단위로 고유 주소를 가지고 있습니다. 프로세서는 메인 메모리에 저장된 명령어를 해석하고 실행하는 장치입니다. 명령어의 종류와 크기는 인스트럭션 집합에 따라 다르지만 대개 적재..
- Total
- Today
- Yesterday
- BOJ
- 취미
- 재귀함수
- backtracking
- 이진탐색
- Push
- 건이의 특제 떡국 끓이기
- 메이플스토리
- 큐
- 알고리즘
- 영화
- C언어
- BFS
- 구조체
- Verilog
- 이분법
- recursive
- 백트래킹
- 베릴로그
- gem5
- C++
- 구현
- 백준
- 완전탐색
- Git
- 너비우선탐색
- 스택
- 영어 어휘
- 정렬
- 애니메이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |