
운영체제 (Operating System) 운영체제란 컴퓨터 하드웨어를 관리하는 프로그램으로, 운영체제 혹은 응용 프로그램을 위한 자원 관리 및 사용자와 하드웨어 사이에 중재 역할을 한다. 운영체제는 위와 같은 작업들을 굉장히 다양한 방법으로 처리한다. 예를 들면, 대형 컴퓨터 운영체제는 주로 하드웨어 이용을 최적화하고 PC 운영체제는 게임, 비즈니스 응용 등을 지원하며, 휴대용 기기의 운영체제의 경우, UX를 좀더 관점에 둔 환경 조성을 위해 설계되었다. 즉, 운영체제는 목적에 따라 서로 다른 설계방식이 적용되어 있다. 운영체제는 이와 같은 작업들을 하기에 덩치가 매우 크고 복잡하다. 하여 주요 구성요소와 기본 구성에 대해 먼저 학습하자. 운영체제의 기능 하드웨어와 응용 프로그램을 연결하고 적절한 자원..

레지스터 플로우 이전 글에서 CPU의 내부 구조에 대해서 알아보았고, 이번에는 레지스터가 동작하는 방식을 알아보려한다. 레지스터에 데이터가 인출되는 사이클과 실행되는 사이클을 간략하게 하면 다음과 같다. 프로그램 실행 버튼 클릭 운영체제 혹은 실행 환경에서 해당 프로그램의 실행 정보를 메모리에 적재 프로그램 명령어들의 메모리 위치를 포함하고 초기화 및 실행에 필요한 데이터 포함 운영체제 혹은 실행 환경에서 프로그램의 시작 지점에 해당하는 주소를 PC에 생성 및 설정 PC에서 명령어를 인출하여 MBR로 경유 MBR에서 IR에 명령어 저장 실행 사이클에서 제어 유니트로 보내져 해독 MAR은 CPU 내부 주소 버스와 시스템 주소 버스 사이에서 버퍼 역할 MBR은 데이터에 대하여 내부 데이터 버스와 시스템 데이..

CPU의 기능 CPU는 '프로그램 수행'이라는 컴퓨터의 중추적 기능을 수행한다. 이를 위해 CPU는 메모리에 저장되어 있는 프로그램 코드인 명령어들을 실행하고 이러한 명령어들을 수행하기 위하여 여러 세부적인 동작들을 순서대로 나열하여 진행한다. 명칭 설명 명령어 인출(Instruction fetch) 메모리로부터 명령어 읽기 명령어 해독(Instruction decode) 수행할 동작을 결정하기 위해 명령어 해독 데이터 인출(Data fetch) 명령어 실행을 위해 데이터가 필요한 경우, 메모리 혹은 I/O 장치에서 데이터를 읽기 데이터 처리(Data process) 데이터에 각 연산을 수행 데이터 저장(Data store) 결과 저장 ※ 1, 2번 동작은 모든 명령어의 공통 수행 과정이다. 하지만 3~..
임계 영역과 뮤텍스 데이터 레이스(data race)라는 개념을 이전 글에서 언급한 바있다. 이는 두개 이상의 스레드가 하나의 변수를 사용할 경우 변수에 대한 IO 주도권이 모호해지기에 데이터 충돌이 날 수 있기 때문이다. 이러한 상태를 경쟁 상태라고도 불리기도 하며 경쟁 상태는 여러 방법으로 해결할 수 있다. 뮤텍스 (Mutex) 경쟁 상태를 해결하는 대표적인 방법이 뮤텍스(mutex)이다. 상호 배제(mutural exclusion)의 준말인 뮤텍스의 개념은 굉장히 간단하다. 스레드에서 어떤 정보를 사용하는 동안 다른 스레드는 해당 정보에 접근이 불가능하다. 즉, 하나의 스레드가 특정 데이터를 사용할때, 뮤텍스의 시작을 선언("락을 건다"라고 표현한다.)하면 뮤텍스가 선언된 명령줄부터 뮤텍스가 해제(..

스레드의 동작 원리 멀티스레드, 싱글스레드라고 부르며 작업을 동시에 처리하는 기술이라고만 알고 있는 스레드에 대해 조금 더 알아보자. 우선 단일 코어 CPU가 달린 컴퓨터가 있다고 생각하자. 이런 환경에서 프로세스나 여러 스레드가 동시에 실행될 수 있을까? 만약 A 작업과 B 작업을 동시에 진행시킨다면 어떻게 처리할까. 우선 사람이라면 보통 작업의 순서가 정해져있지 않는 이상 하나의 작업을 완료하고 다른 작업을 진행할 것이다. 하지만 우리가 다루는 컴퓨터는 사람과 동일하게 생각하지 않는다. 컴퓨터는 하나의 작업을 하면서 여유가 생기는 찰나의 순간 다른 작업을 진행하려 한다. 즉, 여러 프로세스와 스레드들을 동시에 실행하는 운영체제는 일정 시간마다 번갈아가며 스레드들을 실행한다. 이렇게 스레드를 변경하며 ..
- Total
- Today
- Yesterday
- 인터럽트
- 컴파일
- static_cast
- 할당
- 알고리즘
- c++
- 함수
- thread
- dynamic_cast
- 프로세스
- 입출력
- 멀티스레드
- 클래스
- 구조
- New
- 운영체제
- 크기
- const
- malloc
- 레지스터
- 초기화
- 수학
- 백준
- 명령어
- 게임수학
- 포인터
- 메모리
- CPU
- 상속
- 스레드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |