Computer Science

Computer Science/컴퓨터 구조

컴퓨터의 구성

컴퓨터의 구성 컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 나누어진다. 하드웨어 : 컴퓨터를 구성하는 기계적 장치 소프트웨어 : 하드웨어의 동작을 지시하고 제어하는 명령어 집합 하드웨어 - 중앙처리장치(CPU) - 입력장치 - 연산장치 - 제어장치 - 기억장치 - 보조기억장치 - 출력장치 -> 이들은 시스템 버스로 연결되어 있다. -> 시스템 버스는 데이터와 명령 제어 신호를 각 장치로 실어나르는 역할을 한다. 소프트웨어 - 시스템 소프트웨어 -> 운영체제, 컴파일러 - 응용 소프트웨어 -> 프리미어프로, 포토샵 중앙 처리 장치 CPU (== 마이크로프로세서) - 인간의 두뇌에 해당하는 가장 중요한 부분으로 컴퓨터의 모든 장치를 제어하고 명령을 실행 - 주 기억 장치에서 프로그램 명령어와 데이터를 읽어와..

Computer Science/운영체제

컴퓨터 시스템 구조2(System Structure & Program Execution 2)

동기식 입출력과 비동기식 입출력 동기식 입출력(synchronous I/O) -> 도둑이 은행을 털러오면, 경찰이 온다. (순차적으로 실행되는 것) - I/O 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 구현 방법1 - I/O가 끝날 때까지 CPU를 낭비시킴 - 매 시점 하나의 I/O만 일어날 수 있음 구현 방법 2 - I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗음 - I/O처리를 기다리는 줄에 그 프로그램을 줄 세움 - 다른 프로그램에게 CPU를 줌 비동기식 입출력(asynchronous I/O) - I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감 * 두 경우 모두 I/O의 완료는 인터럽트로 알려줌 DMA(Direct ..

Computer Science/운영체제

컴퓨터 시스템 구조1(System Structure & Program Execution 1)

CPU: 작업을 처리하는 하드웨어 DMA controller: I/O 장치로 부터 온 데이터를 메모리에 저장해주는 역할 Mode bit: 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 -> 0이면 OS가 사용중(커널 모드), 1이면 사용자 프로그램이 사용중(사용자 모드) -> 보안을 해칠 수 있는 중요한 명령어는 커널 모드에서만 수행가능한 '특권명령'으로 규정 -> Interrupt나 Exception 발생 시 하드웨어가 mode bit를 0으로 바꿈 -> 사용자 프로그램에게 CPU를 넘기기 전에 mode bit를 1로 셋팅 사용자 프로그램이 I/O를 하는 법 - 시스템콜: 사용자 프로그램이 OS에 요청하는 것 (CPU에게 요청하기 위해) -> 사..

Computer Science/운영체제

운영체제(Operating System, OS)란?

운영체제의 의미 -> 컴퓨터 하드웨어의 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 협의의 운영체제(커널) -> 일반적인 의미 -> 운영체제의 핵심 부분으로 메모리에 상주하는 부분 -> 좁은 의미의 운영체제 광의의 운영체제 -> 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념 -> 넓은 의미의 운영체제 운영체제의 목표 -> 컴퓨터 시스템의 자원을 효율적으로 관리(자원관리자) (프로세서, 기억장치, 입출력 장치 등의 효율적 관리) -> 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 - 각 프로그램은 가상 머신에 의해 자신의 프로그램만 실행되는 듯하게 보인다. - 하지만 이는 운영체제가 자원을 잘 분배해서 그렇게 보이게 하는 것. 운영체제의 분류 ..

Computer Science/자료구조

그래프(Graph)

그래프란? 노드와 간선으로 이루어진 자료구조 그래프의 종류 - 무방향 그래프(Undirected Graph): 방향성이 없고 노드(정점)이 연결된 그래프 - 방향 그래프(Directed Graph): 무방향 그래프에서 방향성이 추가된 그래프 - 완전 그래프(Complete Graph): 각 정점에서 다른 모든 정점을 연결하여 최대 간선 수를 가진 그래프 -> 정점이 n개인 무방향 그래프에서는 최대 간선 수 = n(n-1)/2 -> 정점이 n개인 방향 그래프에서 최대 간선 수 = n(n-1) - 가중(치) 그래프(Weight Graph): 간선에 가중치를 담아서 표현(방향 여부 상관X) - 부분 그래프(Sub Graph): 일부 정점과 간선으로 구성된 그래프(가중치 그래프에서 조금 떼어낸 그래프) 그래프의..

Computer Science/자료구조

해시 테이블(Hash Table)

테이블 자료구조란? -> 데이터가 키-값 형태로 저장된 구조 테이블 자료구조의 특징 - key를 이용해 원하는 데이터를 찾을 수 있다. - key는 중복될 수 없고 의미있는 값을 가진다. - 탐색 연산은 O(1)의 시간복잡도를 가지지만 메모리의 효율성이 낮고 적용 범위가 제한적이다. - 사전(dictionary)구조 혹은 맵(map)이라고 함. supermarket = {"bread": 1, "juice": 5, "snack": 18} # key 있는지 검사 if "snack" in supermarket: print("snack!") # value 있는지 검사 if 5 in supermarket.values(): print("juice!") # key 출력 print(supermarket.keys()) ..

Computer Science/자료구조

우선순위 큐(Priority Queue) & 힙(Heap)

우선순위 큐란? -> 우선순위를 근거로 데이터를 뽑는 구조 우선순위 큐의 특징 - 들어간 순서와 나가는 순서가 아무런 상관이 없다. - 데이터를 뽑을 때 우선순위를 근거로 뽑는다. - 우선순위를 판단하고 결정하는 건 프로그래머이다. - 같은 우선순위를 가진다면 먼저 들어온 원소를 처리한다. - 보통 힙을 통해 우선순위 큐를 구현한다. (배열이나 링크드리스트는 best와 worst의 편차가 크기 때문) 힙이란? - 완전 이진 트리(Complete Binary Tree)이다. - 부모 노드의 값이 항상 자식 노드들의 값보다 크거나(Max Heap) 작아야(Min Heap)한다. - 힙으로 우선순위 큐를 구현할 때는 노드에 저장된 값을 우선순위로 본다. - 힙은 루트 노드에 우선순위가 높은(숫자가 큰-Max ..

Computer Science/자료구조

트리(Tree)

트리란? -> 계층적 관계를 표현하는 자료구조 -> 하나의 중심을 기점으로 뻗어나가는 구조 트리 용어 - 노드(Node): 트리의 구성 요소(기본 단위) => A, B, C, D, E, F, G, H, I, J - 간선: 노드와 노드를 연결하는 선 - 루트 노드(Root): 트리 구조에서 최상위에 존재하는 노드 => A - 단말 노드(Leaf Node): 아래로 또 다른 노드가 연결되어 있지 않은 노드 => H, I, J, F, G - 내부 노드: 단말 노드를 제외한 모든 노드 => A, B, C, D, E - 서브 트리(Sub-tree): 트리에서 일부를 떼어낸 트리 - 레벨(level): 루트 노드를 기준으로 레벨 0부터 자식 노드로 가면서 레벨이 증가한다. - 높이: 최대 레벨의 값(0부터 셌을 때..

레이튼
'Computer Science' 카테고리의 글 목록 (5 Page)