묻공러
'CS/[널널한 개발자] CS 개론' 카테고리의 글 목록

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

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의 공간을 차지하게 되는데 Page 단위 만큼을 프로세스 RAM을 서로 연결시켜 관리하게 된다 만약, 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] 컴퓨터의 구성요소

# 컴퓨터의 구성요소 컴퓨터는 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] 동시성과 병렬성

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

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

[컴퓨터 구조 6] HDD, SSD와 파일 시스템

# HDD의 논리적 구조 HDD와 SSD 모두 Track과 Sector로 관리된다 # 조각 모음의 의미 HDD의 경우, 파일이 저장될 때, 일반적으로 Track이 이어지는 경우보다는 끊어져서 관리가 된다 그렇게 되면 하드디스크의 물리적 회전이 계속 요구되고 입출력 성능이 저하됨 따라서 조각 모음을 통해 파일의 Track을 이어지게 해서 입출력 성능을 높임 최근에는 운영체제가 직접 관리해 줌 SSD의 경우, 디스크가 회전하는 것이 아니라 어느 곳이든 칩으로 접근과 관리를 하게 되니 속도가 매우 빠르고 물리적인 회전이 아닌 칩 자체의 읽기, 쓰기의 성능에 따라 입출력 속도가 결정이 된다 따라서 조각 모음도 의미가 없어지게 됨 # 파일이 저장되는 방법 (파일 시스템) - FAT(File Allocation T..

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

[컴퓨터 구조 5] 컴퓨터가 기억공간을 관리하는 방법

# 기억장치의 종류와 역할 CPU: Register, Cache memory 주기억장치: Cache memory, RAM 보조기억장치:HDD, SSD, USB, Backup device Cache memory: CPU의 연산과정에 따라 필요할 것 같은 데이터를 미리 예측해서 RAM에서 복사해 옴 ex. HDD: 도서관 RAM: 책장 캐시: 책상 레지스터: 읽고 있는 책 CPU(ALU): 사람 # 컴퓨터가 기억공간을 관리하는 방법 레지스터는 개별 기억 공간마다 고유 이름을 부여 주기억장치는 일련번호(메모리 주소)를 통해 보조기억장치는 Track 번호, Sector 번호를 통해 기억공간이 관리된다

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

[컴퓨터 구조 4] 컴퓨터가 연산하는 과정

# 컴퓨터가 연산하는 과정 CPU: 연산장치(비메모리) RAM: 1차 메모리 HDD, SSD: 2차 메모리 1) RAM과 같은 메모리에서 정보를 가져온다 RAM은 일련번호와 데이터들로 구성되어 있다 32비트 체제에서 관리할 수 있는 메모리 최대 크기는 2^32 = 42.9억 바이트 = 4GB RAM의 일련번호와 데이터를 담는 기준이 1바이트라고 한다면, 최대 42.9억 개의 일련번호와 데이터 바구니가 있다는 뜻 2) 정보를 참조해서 CPU의 Register에 옮겨오고 3) ALU를 통해 산술연산을 실시 4) 그 결과를 RAM에 보내준다