묻공러
'분류 전체보기' 카테고리의 글 목록 (44 Page)

분류 전체보기

CS/[혼자 공부하는] 컴퓨터 구조

4-1] CPU의 작동원리: ALU와 제어장치

1] ALU: 레지스터로부터 피연산자를 받아들이고, 제어장치로부터 제어 신호를 받아들인다 ALU 내부에 다양한 계산을 위한 회로들이 존재한다 ex. 덧셈을 위한 가산기, 뺄셈을 위한 보수기, 쉬프트, 오버플로우 검출기... 플래그 레지스터: 연산 결과의 부호와 같은 CPU 상태에 대한 부가적인 정보가 들어감 2] 제어장치 제어장치는 위처럼 플래그, 클럭, 해석할 명령어를 받아들이고 제어신호를 주고받는다 클럭: 컴퓨터의 모든 부품을 일사불란하게 움직일 수 있게 하는 시간 단위

CS/[혼자 공부하는] 컴퓨터 구조

3] 명령어

1] 소스 코드와 명령어 (1) 고급언어: 개발자가 이해하기 쉽게 만든 언어 1. 컴파일 언어 2. 인터프리트어 (2) 저급 언어: 컴퓨터가 이해하고 실행하는 언어 1. 기계어: 2진수 or 16진수로 표현된 언어 2. 어셈블리어: 기계어를 읽기 편한 형태로 번역한 저급 언어 (3) 고급언어가 저급언어로 변환될 때 1. 컴파일 방식 (컴파일 언어 > 저급언어): 한 번에 처리하는 방식 2. 인터프리트 방식 (인터프리터 언어 > 저급언어): 한 줄씩 처리하는 방식 2] 명령어의 구조 (1) 명령어는 연산코드(수행할 연산)와 오퍼랜드(연산에 사용될 데이터 혹은 연산에 사용될 데이터가 저장된 위치)로 구성 (2) 오퍼랜드 필드는 데이터보다는 주소를 많이 담고 있는 경우가 많기에 주소필드라고 부름 오퍼랜드가 없..

CS/[혼자 공부하는] 컴퓨터 구조

1] 컴퓨터 구조의 큰그림

1] 컴퓨터가 이해하는 두 가지 정보 - 데이터 0과 1로 이루어진 숫자, 문자, 이미지, 동영상과 같은 정적인 정보 컴퓨터와 주고받는/내부에 저장된 정보를 데이터라 통칭함 - 명령어 컴퓨터는 결국 명령어를 처리하는 기계이며 명령어는 컴퓨터를 실질적으로 움직이는 정보, 데이터는 명령어를 위한 일종의 재료이다 2] 컴퓨터의 네 가지 핵심 부품과 메인보드 그리고 시스템 버스 (1) 메모리: 현재 실행되고 있는 프로그램(프로세스)의 명령어와 데이터를 저장하는 부품 프로그램이 실행되기 위해서는 메모리에 저장되어 있어야 한다 메모리는 실행되는 프로그램의 명령어와 데이터를 저장한다 메모리에 저장된 값의 위치는 주소로 알 수 있다 (2) CPU: 메모리에 저장된 명령어를 읽어 들이고, 해석하고, 실행하는 부품 ALU..

CS/[널널한 개발자] CS 개론

[자료구조] 자료구조와 알고리즘

# 자료구조 - 자료를 구조화하는 것 - 일정 규칙으로 자료를 나열하거나 정리하는 것 # 알고리즘 - 정해진 규칙들 - 구조화된 자료에서 원하는 것을 빨리 찾아내는 방법 # 자료구조의 종류 1) 선형구조(1차원) 2) 비선형 구조(2차원) # 선형자료구조 1) Stack - 출입구 1 - LIFO(Last In First Out) 구조 - 뒤집기, 되돌아가기 위한 구조 2) Queue - 출입구 2 (양 끝) - FIFO(First In First Out) 구조 - 멀티태스킹, 멀티쓰레드 환경에서 동시다발적으로 연산과 처리를 하기 위해 사용됨 3) Linked List 4) Array # 비선형 자료구조 1) 트리 : 2진 트리 - 자료당 두 개의 위치정보(링크)를 이용해 셋을 하나로 묶는다 - 맨 꼭대..

CS/[널널한 개발자] CS 개론

[운영체제 6] 가상 메모리 소개

# 가상 메모리 시스템하드디스크를 RAM처럼 사용한다는 의미 모든 메모리 관리 단위는 Page이다프로세스가 만들어지면각 프로세스마다 RAM의 공간을 차지하게 되는데프로세스 RAM을 서로 연결시켜 Page 단위를 기준으로 관리한다 만약,A 프로세스로 이미 램의 공간이 부족한 상태에서B 프로세스가 실행이 되면 기존에 쓰고 있었던 A 프로세스의 RAM의 Page들을 HDD로 보내버리는 행위를 하는데이를 Page-out(Swap-out) 만약,다시 A 프로세스를 사용하려고 하면RAM에 있는 B 프로세스의 Page들을 Page-out(Swap-out)하고HDD에 있는 A 프로세스의 Page들을 Page-in(Swap-in)함 따라서,램이 부족하면 프로그램 간 스위칭할 때 하드디스크의 읽기/쓰기가 빈번하게 일어나..

CS/[널널한 개발자] CS 개론

[운영체제 5] User mode와 Kernel mode 그리고 가상화

# OS의 핵심 Kernel 컴퓨터라는 국가의 법은 Kernel로 구현된다 Kernel 영역과 User 영역은 완전히 다른 세상이다 Kernel은 1) I/O 제어 2) 자원관리 3) 접근 통제 를 담당한다 # User mode와 Kernel mode User mode와 Kernel mode를 연결해 주는 Interface가 파일형태로 존재하는데 일반적인 파일이 아닌 Device 파일 형태로 존재한다 # Antivirus Filter에 실시간 감지 엔진이 작동하여 바이러스가 있는지 없는지 Usermode의 Antivirus 프로세스를 통해 확인 후 통제하게 된다 # Virtualization H/W를 S/W화 한 것을 가상화(Virtualization)라고 한다 클라우드 컴퓨팅의 기본적인 원리가 가상화이다

CS/[널널한 개발자] CS 개론

[운영체제 4] 국가와 국민으로 이해하는 컴퓨터

# 국가와 국민으로 이해하기user 영역의 각 프로세스들의 메모리 공간은 독립적이다그렇기에 어떤 프로세스가 다른 프로세스를 의도적으로, 실수로 다른 프로세스의 메모리 공간을 침투한다면커널 영역의 OS가 access violation 오류를 일으키게 된다(특별하게 Debugger는 다른 프로세스의 메모리 공간에 침투하는 것을 OS가 허용해 준다) 또한, 프로세스들이 동시에 존재하는 것을 멀티태스킹 환경이라고 한다각 프로세스들은 동시성을 지니고 있고 원자성 보장을 받아야 한다

CS/[널널한 개발자] CS 개론

[운영체제 3] 컴퓨터의 구성요소 (Process, Thread, Stack, Heap)

# 컴퓨터의 구성요소컴퓨터는 H/W와 S/W로 구성된다S/W는 Application과 System S/W로 구분된다가장 대표적인 System S/W는 OS(Operation System)이다  # 프로그램, 프로세스, 스레드프로그램은 exe파일과 같다프로그램을 실행하면 프로세스가 생성된다스레드는 프로세스 속에 존재하는 실행단위이다스레드는 프로세스에게 할당된 자원을 공유한다  # 용도에 따른 기억공간의 구분Stack: 각 Thread마다 각 Stack의 공간을 가진다Heap: 각 프로세스마다 주어진 공유 공간

CS/[널널한 개발자] CS 개론

[운영체제 2] 원자성, 동기화 그리고 데드락

# 원자성과 동기화 동시성이 있을 경우 반드시 충돌을 할 가능성이 있기에 이러한 것을 막기 위해 동기화가 중요하다 그리고 이러한 동기화를 통해 충돌 가능성이 없어진 상태를 원자성이라고 한다 따라서, 원자성 보장을 위해 동기화는 매우 중요하다 # 교착상태(Dead Lock) 동기화를 했음에도 불구하고 예상치 못한 변수나 조건들이 발생하게 되거나 동기화 논리구조의 예외가 발생하여 심각한 논리적 오류가 발생하는 것을 "교착상태(Dead Lock)"라고 한다

CS/[널널한 개발자] CS 개론

[운영체제 1] 동시성과 병렬성

# 동시성 여러 가지 일이 동시에 진행되는 것 # 병렬성 같은 일을 여러 주체가 동시에 진행되는 것 따라서, 동시성 안에 병렬성이 포함된 개념으로 볼 수 있다