컴퓨터 시스템 =  소프트웨어 + 하드웨어

 

  • 소프트웨어 : 하드웨어의 동작을 지시하고 제어하는 명령어의 집합
  • 하드웨어 : 컴퓨터를 구성하는 기계적 장치

 

 

 

컴퓨터 구조란?

하드웨어를 구성하는 각 장치의 특성과 동작 원리를 다루는 학문

 

 

- 하드웨어는 중앙처리장치(CPU), 기억장치(Memory), 입출력장치(I/O)로 구성

- 각 장치는 시스템 버스로 연결

 

 

 

 

 

 

 

 

 

중앙처리장치(CPU)

- 인간의 두뇌와 같은 역할
- 주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리
- 명령어 수행 순서 제어

- 소형 컴퓨터에서는 중앙처리장치를 마이크로프로세서라고도 함

- 세부 구성
   (1) ALU (Arithmetic and Logic Unit)

       → 산술논리연산장치

       → 비교와 연산을 담당


   (2) CU (Control Unit)

       → 제어장치 : 각 컴퓨터 구성요소를 제어할 제어신호를 생성하여 관리

       → 명령어 해석과 실행 담당


   (3) Register

       → 속도가 빠른 데이터 기억장소

       → 명령어를 실행하기 위해 필요한 데이터와 상태, 명령어를 저장  

 

   (4) Internal Bus (내부버스)

       → CPU 내부의 구성요소 간 데이터 전달과 연결을 위한 경로

 

 

CPU 작동 원리 관련 내용은 해당 포스팅 참조

https://ynsseon.tistory.com/8

 

중앙처리장치(CPU) 작동 원리

CPU의 구성 (1) 연산장치 (=산술논리연산장치) - 산술 연산, 논리 연산 수행 - 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보냄 (2) 제어장치 - 명령어를 순서대로

ynsseon.tistory.com

 

 

 

 

 

 

 

기억장치

- 프로그램, 데이터, 연산의 중간 결과값 등을 저장하는 장치
- 주기억장치와 보조기억장치로 나눠짐

     (1) 주기억장치

         → 현재 CPU가 처리하고 있는 내용을 저장하는 기억장치

         → RAM과 ROM이 존재

 

* RAM (Random Access Memory) : 휘발성 메모리, 읽고 쓰기 모두 가능, 응용 프로그램 및 운영체제 등을 불러와 CPU가 작업할 수 있도록 하는 기억장치

* ROM (Read Only Memory) : 비휘발성 메모리, 기억된 데이터를 읽기만 가능한 장치, 데이터 저장 후 반영구적으로 사용 가능

 

     (2) 보조기억장치

         → 물리적인 디스크가 연결되어 있는 기억장치

         → 데이터를 영구적으로 보관 가능

         → HDD(Hard Disk Driver), SSD(Solid State Driver) 존재

 

- CPU는 Store / Load 방식으로 주기억장치에 액세스

     (1) 적재(Load)    CPU Register ☜ 기억장치

        → 주소버스를 통해 CPU가 요구하는 데이터의 주소값과 제어 버스를 통해 Read 신호가 기억장치에 전달

        → 기억장치에 저장된 데이터를 읽어 CPU의 레지스터로 적재

 

     (2) 저장(Store)    CPU Register ☞ 기억장치

        → 주소 버스를 통해 특정 주소와 제어버스를 통해 Write 신호가 기억장치에 전달

        → CPU의 레지스터에서 기억장치의 특정 주소에 데이터를 저장

 

 

 

 

 

 

 

입출력장치

- 입력장치와 출력장치로 나눠짐
- 입력장치 : 키보드, 마우스, 조이스틱 등
- 출력장치 : 프린터, 모니터, 스피커 등

 

 

 

 

 

 

 

시스템버스

- 하드웨어 구성 요소를 물리적으로 연결하는 선
- 각 구성 요소가 다른 구성 요소로 데이터를 보낼 수 있는 통로
- 용도에 따른 분류
  (1) 데이터 버스

     * 중앙처리장치 ↔ 기억장치, 입출력장치 (양방향 버스)

     * 컴퓨터 구성 요소 간에 데이터를 전달함

 

  (2) 주소 버스

     * 중앙처리장치 → 주기억장치, 입출력장치 (단방향 버스)

     * 기억 장치의 주소 또는 입출력 장치의 포트번호를 지정하고 전달

     * 데이터를 정확히 실어 나르기 위해서는 기억장치의 '주소'를 정해주어야 함 

 

  (3) 제어 버스

     * 컴퓨터 구성 요소간에 제어 신호를 전달함 (양방향 버스)

     * 제어 신호에는 기억장치 읽기 및 쓰기, 버스 요청 및 승인, 인터럽트 요청 및 승인, 클락, 리셋 등이 있음

 

 

'CS > 컴퓨터구조' 카테고리의 다른 글

중앙처리장치(CPU) 작동 원리  (0) 2022.07.02

UDP란?

 

- User Datagram Protocol의 약자

 

- TCP/IP 5계층에서 Transport Layer(전송계층)의 프로토콜

 

- TCP와는 다르게 데이터를 패킷으로 나누고 반대편에서 재조립하는 과정을 거치지 않으며, 수신지에서 제대로 받던 받지 않던 상관 안하고 데이터를 보내기만 함

 

- 흐름제어, 오류제어, 또는 손상된 세그먼트의 수신에 대한 재전송 하지 않음

 

- 단순 오류탐지만을 함 → 흐름제어나 오류제어 등의 기능은 어플리케이션에서 처리해주어야 함

 

- TCP 보다 신뢰성이 떨어지지만(비신뢰성), 전송 속도가 일반적으로 빠른 프로토콜 → 소량의 데이터 전송 시에는 UDP를 이용하는 것이 효율적

 

- Connectionless → 비연결성 (3 way-handshake X)

 

 

 

 

 

 

 

UDP 구조

- Source Port : 해당 패킷을 만든 송신자의 어플리케이션 포트번호
- Destination Port : 해당 패킷을 수신할 어플리케이션 포트번호
- Length : UDP헤더와 데이터를 포함한 전체 길이를 Byte 단위로 표시
- 데이터가 전송 중 손상되지 않고 원본과 동일한지 여부를 확인하는 기능을 제공 (오류탐지)

 

 

 

 

 

UDP를 사용하는 이유

- UDP의 결정적인 장점은 데이터의 신속성 (데이터의 처리가 TCP보다 빠름)
- 주로 실시간 방송과 온라인 게임에서 사용

 

신뢰성이 요구되는 애플리케이션에서는 TCP를 사용하고, 간단한 데이터를 빠른 속도로 전송하고자 하는 애플리케이션에서는 UDP를 사용

 

 

 

* (참고) TCP와 UDP의 차이를 잘 설명해준 블로그
https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

 

 

 

 

UDP 기반의 프로토콜


* TFTP (Trivial File Transfer Protocol)


  - FTP(File Transfer Protocol)와 마찬가지로 파일을 전송하기 위한 프로토콜

  - FTP보다 더 단순한 방식으로 파일 전송

 

 

* SNMP (Simple Network Management Protocol)


  - 네트워크 장비를 관리 감시하기 위한 목적

  - 네트워크 관리자가 네트워크 성능을 관리하고, 네트워크 문제점을 찾아 수정하는데 도움을 줌

 

 

* DHCP (Dynamic Host Configuration Protocol) 


  - 동적으로 IP주소를 할당해주는 프로토콜

 

 

* NFS (Network File System)

 

  - 네트워크 상에서 파일시스템을 공유하도록 설계된 파일 시스템

 

 

* DNS (Domain Name System) 


  - 호스트의 도메인 이름(사람이 이해하기 쉬운)  ↔  네트워크 주소 (컴퓨터가 이해하기 쉬운 IP주소)

 

 

* RIP (Routing Information Protocol)


  - 동적 라우팅 정보 프로토콜 (LAN 구간에서 사용되는 프로토콜)

 

라우팅 프로토콜이란, 라우터가 패킷을 목적지까지 전달하기 위해 인접한 라우터 사이에서 경로 정보를 작성하고 제어하는 프로토콜을 의미한다.

 

정적 라우팅은 최종 목적지까지 경로를 직접 설정하여 통신을 한다고 하면,

동적 라우팅은 라우터에 경로를 설정하는 것이 아닌 각각의 라우터가 자신의 정보를 다른 라우터에게 "광고"하도록 하여 서로 자신의 정보를 교환하며 직접적인 경로 설정 없이 목적지까지 도달할 수 있도록 한다.

'CS > 네트워크' 카테고리의 다른 글

HTTP & HTTPS  (0) 2022.08.10
흐름제어 & 혼잡제어  (0) 2022.08.09
TCP 3 & 4 way handshake  (0) 2022.08.09
OSI 7계층  (0) 2022.08.09
대칭키 공개키  (0) 2022.07.23

파일 시스템이란?

 

- 컴퓨터에서 파일이나 자료를 쉽게 발견 할 수 있도록, 유지, 관리하는 방법

- 파일의 이름을 정하고 저장 및 검색을 위해 논리적으로 어디에 위치시켜야 하는지에 대한 방법을 구성한 시스템

- 파일을 빠르게 읽기, 쓰기, 삭제 등 기본적인 기능을 원활히 수행하기 위한 목적

- 사용자 영역이 아닌 커널 영역에서 동작

 

 

 

 

 

파일 시스템의 역할

- 파일관리 : 파일 저장, 참조, 공유

- 보조 저장소 관리 : 저장 공간 할당

- 파일 무결성 메커니즘 : 파일이 의도한 정보만 포함하고 있음을 의미

- 접근 방법 : 저장된 데이터에 접근할 수 있는 방법 제공

 

 

 

 

 

파일 시스템 구조

- 메타 영역과 데이터 영역 두가지 영역으로 구분

- 메타 영역 : 데이터 영역에 기록된 파일의 이름, 위치, 크기, 시간정보, 삭제유무 등 파일의 정보

- 데이터 영역 : 파일의 데이터

 

→ 윈도우 탐색기를 이용하여 검색할 때 메타 영역을 탐색하면서 파일을 찾음

 

 

 

 

 

파일 시스템 특징

- 사용자가 파일을 생성, 수정, 제거할 수 있도록 함

- 적절한 제어 방식을 통해 타인의 파일을 공동으로 사용할 수 있도록 함

- 파일 공유를 위해 읽기만 허용, 기록만 허용, 수행만 허용 또는 이들을 여러 형태로 조합한 것 등 여러 종류의 액세스 제어 방법을 제공

- 계층적 디렉터리 구조를 가짐

  → 루트(root) 디렉토리 아래에 각 디렉토리들이 다시 또다른 하부 디렉토리들을 가지는 형태

- 디스크 파티션 별로 파일시스템을 하나씩 둘 수 있음

 

 

 

 

 

파일 시스템 개발 목적

- HDD와 메인 메모리 속도차 줄이기

- 파일 관리 용이

- HDD의 막대한 용량을 효율적으로 이용

 

 

 

 

 

주요 파일 시스템

파일을 보관하고 검색하는 기능에 있어서는 차이점이 없지만, 운영체제별로 지원하는 파일 시스템의 종류가 다름

 

Windows : FAT(FAT12/16/32,exFAT), NTFS

 

* FAT (File Allocation Table)

   - 어느 영역에 파일이 속해 있는지, 공간에 여유가 있는지, 또 어디에 각 파일이 디스크에 저장되어 있는지에 대한 정보를 중심으로 하는 테이블을 이용하는 방식

   - 상대적으로 간단한 파일 시스템. 성능이 상대적으로 다른 파일 시스템보다 좋지 않음

 

* FAT32

   - 오래되고 많이 사용되는 파일 시스템

   - 안정성이 좋고, 다양한 OS 및 기기에 대한 호환성이 좋음

 

* NTFS (New Technology File System)

   - FAT32의 약점을 보완하기 위해 개발된 파일 시스템

   - 윈도우에서는 최적화되어 있으나 Apple의 Mac OS, Google의 Android, Linux와 같은 기기에서 사용에 제한

 

 

 

Linux : ext(ext2/3/4)

 

* ext (extended file system, 파일 확장 시스템)

   - 리눅스용 파일 시스템 가운데 하나로, 오늘날 많은 리눅스 배포판에서 주 파일 시스템으로 쓰임

 

 

 

Mac OS : HFS, HFS+

 

* HFS (Hierarchical File System)

   - 애플이 Mac OS를 구동하는 컴퓨터 시스템에 사용할 목적으로 개발한 파일 시스템

 

 

'CS > 운영체제' 카테고리의 다른 글

페이지 교체 알고리즘  (0) 2022.07.30
프로세스 vs 스레드  (0) 2022.07.16
페이징(Paging) & 세그멘테이션(Segmentation)  (0) 2022.06.18
세마포어(Semaphore)와 뮤텍스(Mutex)  (0) 2022.06.18
CPU 스케줄링  (0) 2022.06.11

+ Recent posts