컴퓨터 시스템과 데이터통신 핵심


1. 컴퓨터 시스템의 기본 구조

  • 컴퓨터 시스템은 하드웨어(Hardware)소프트웨어(Software)로 구성된다.
  • 하드웨어는 물리적 장치(입력장치, 출력장치, 기억장치, 중앙처리장치)로 이루어진다.
  • 소프트웨어는 시스템 소프트웨어(운영체제 등)와 응용 소프트웨어(워드, 브라우저 등)로 나뉜다.
구성요소 주요 기능 예시
입력장치 데이터 입력 키보드, 마우스, 스캐너
중앙처리장치(CPU) 명령어 해석, 연산, 제어 ALU, 레지스터, 제어장치
기억장치 데이터/프로그램 저장 RAM, ROM, HDD, SSD
출력장치 처리 결과 출력 모니터, 프린터, 스피커

2. 2진수 체계와 디지털 코드

  • 컴퓨터는 2진수(0, 1)로 모든 데이터와 명령어를 표현한다.
  • 진법 변환(2진수, 8진수, 16진수)과 2의 보수, 1의 보수 등 다양한 수 표현 방식을 사용한다.
  • BCD(10진수 1자리→4비트 2진수), ASCII(문자 표현), 패리티 비트(오류 검출) 등 다양한 디지털 코드가 있다.

3. CPU와 ALU

  • CPU는 명령어 인출-해독-실행-저장 사이클을 반복한다.
  • ALU(산술논리연산장치)는 덧셈, 뺄셈, 곱셈, 나눗셈 등 산술 연산과 AND, OR, NOT 등 논리 연산을 담당한다.
  • 레지스터(ACC, PC, IR, MAR, MBR 등)는 명령어 처리와 데이터 임시 저장에 사용된다.

4. 운영체제와 시스템 소프트웨어

  • 운영체제(OS)는 하드웨어 자원 관리, 사용자 인터페이스 제공, 프로그램 실행, 파일/입출력/메모리/프로세스 관리 등 다양한 기능을 수행한다.
  • 시스템 소프트웨어는 운영체제, 언어 번역기(컴파일러, 어셈블러, 인터프리터), 유틸리티, 드라이버 등으로 구성된다.
  • 운영체제의 구조는 커널(핵심), 셸(명령어 해석기), 시스템 프로그램, 응용 프로그램 등으로 계층화되어 있다.
운영체제 주요 기능 설명
프로세스 관리 프로그램 실행, 스케줄링, 동기화, 통신
메모리 관리 주기억장치 할당/회수, 가상메모리 지원
파일 관리 파일 생성/삭제/접근, 디렉터리 관리
입출력 관리 입출력장치 제어, 데이터 전송
보호와 보안 자원 보호, 사용자 인증, 권한 관리
네트워크 관리 네트워크 자원 관리, 통신 지원

5. 데이터통신의 기본 개념

  • 데이터통신은 정보(데이터)를 송신자에서 수신자로 전송하는 모든 기술과 원리를 다룬다.
  • 아날로그와 디지털 신호, 전송 매체(유선/무선), 대역폭, 신호 대 잡음비, 채널 용량 등 다양한 개념이 있다.
  • 통신 방식에는 단방향, 반이중, 전이중, 직렬/병렬 전송, 동기/비동기 전송 등이 있다.

6. 다중화와 네트워크 토폴로지

  • 다중화(Multiplexing)는 하나의 전송로에 여러 신호를 동시에 실어보내는 기술이다.
  • FDM(주파수 분할), WDM(파장 분할), TDM(시분할), CDM(코드 분할) 등 다양한 방식이 있다.
  • 네트워크 토폴로지는 메시, 스타, 트리, 링, 버스, 하이브리드 등 다양한 구조가 있다.

7. 교환 방식과 데이터링크 계층 제어

  • 교환 방식에는 회선교환, 패킷교환(가상회선/데이터그램), 메시지교환 방식이 있다.
  • 데이터링크 계층에서는 회선 제어(누가 전송할지), 흐름 제어(속도 조절), 오류 제어(오류 검출/정정)가 중요하다.
  • 흐름 제어는 Stop-and-Wait, Sliding Window 방식이 있고, 오류 제어에는 Parity, CRC, ARQ, FEC 등이 있다.
728x90

운영체제와 시스템소프트웨어의 심화


1. 운영체제의 역할과 중요성

  • 운영체제(OS)는 컴퓨터 하드웨어와 소프트웨어, 사용자 간의 중재자 역할을 한다.
  • 자원 관리, 자원 보호, 하드웨어 인터페이스 제공, 사용자 인터페이스 제공 등 다양한 기능을 수행한다.
  • 대표적인 운영체제로는 Windows, macOS, Linux, UNIX 등이 있다.

2. 운영체제의 주요 기능

  • 프로세스 관리: 여러 프로그램(프로세스)의 실행, 스케줄링, 동기화, 통신, 종료 등을 관리한다.
  • 메모리 관리: 주기억장치의 할당과 회수, 가상메모리 지원, 메모리 보호 기능을 제공한다.
  • 파일 관리: 파일 생성, 삭제, 접근, 디렉터리 구조 관리, 저장장치 관리 기능을 제공한다.
  • 입출력(I/O) 관리: 다양한 입출력장치와의 데이터 전송 및 제어를 담당한다.
  • 자원 보호와 보안: 시스템 자원(메모리, 파일 등)을 비정상적 접근으로부터 보호하고, 사용자 인증과 권한 관리를 수행한다.
  • 네트워크 관리: 네트워크 자원 관리, 데이터 통신 지원 등 네트워크 환경을 제공한다.

3. 운영체제의 목표

  • 효율성: 시스템 자원을 최대한 활용하여 성능을 높인다.
  • 안정성: 오류나 비정상적 상황에서도 시스템을 안정적으로 유지한다.
  • 확장성: 새로운 하드웨어나 소프트웨어 추가에 유연하게 대응한다.
  • 편리성: 사용자가 쉽게 사용할 수 있는 환경을 제공한다.

4. 시스템 소프트웨어의 구성과 예시

구성요소 주요 역할 예시
운영체제(OS) 자원 관리, 사용자/프로그램 인터페이스 제공 Windows, Linux, macOS
언어 번역 프로그램 프로그래밍 언어를 기계어로 변환 컴파일러, 어셈블러, 인터프리터
유틸리티/서비스 프로그램 시스템 유지보수, 파일 관리, 진단 등 디스크 조각모음, 백업, 에디터, 디버거
장치 드라이버 특정 하드웨어와 OS의 연결 프린터 드라이버, 그래픽카드 드라이버
라이브러리/링커 공통 기능 제공, 프로그램 결합 DLL, 링커, 정렬/합병 프로그램

5. 운영체제의 구조와 커널

  • 운영체제의 핵심은 커널(Kernel)로, 하드웨어 자원 관리와 시스템 콜 제공을 담당한다.
  • 커널 위에 셸(Shell)과 다양한 시스템 프로그램, 그리고 응용 프로그램이 위치한다.
  • 부트로더(boot loader)는 컴퓨터 부팅 시 운영체제 커널을 메모리에 적재하는 역할을 한다.

6. 운영체제의 분류

  • 단일 작업/다중 작업: 한 번에 하나/여러 작업 처리
  • 단일 사용자/다중 사용자: 한 명/여러 명이 동시에 사용
  • 실시간 운영체제: 즉각적 응답이 필요한 임베디드, 산업용 시스템에 사용

7. 하드웨어와 소프트웨어의 상호작용

  • 운영체제는 하드웨어의 복잡한 동작을 추상화하여, 사용자가 쉽게 컴퓨터를 사용할 수 있도록 한다.
  • CPU, 메모리, 저장장치, 입출력장치 등 하드웨어 자원을 효율적으로 제어하고, 소프트웨어 실행을 지원한다.

정리

운영체제와 시스템 소프트웨어는 컴퓨터 시스템의 핵심으로, 하드웨어 자원의 효율적 관리와 사용자/프로그램에 대한 다양한 서비스를 제공한다.
프로세스, 메모리, 파일, 입출력, 보안, 네트워크 등 운영체제의 주요 기능과 구조를 이해하면 컴퓨터 시스템의 동작 원리와 효율적 활용 방안을 쉽게 파악할 수 있다.
728x90

데이터링크 제어(회선 제어, 흐름 제어, 오류 제어) 정리


1. 데이터링크 제어의 개념

  • 전송(Transmission): 신호를 변형 없이 목적지까지 보내는 것(OSI 1계층, 물리 계층)
  • 통신(Communication): 신호의 의미를 이해하는 것(OSI 2계층, 데이터링크 계층부터)
  • 데이터링크 계층에서는 회선 제어, 흐름 제어, 오류 제어가 핵심이다.

2. 회선 제어(Line Control)

  • 여러 디바이스가 하나의 링크를 사용할 때, 누가 언제 링크를 사용할지를 결정해 충돌을 방지한다.
방식 설명 특징/예시
경쟁(Contention) 제어자 없이 먼저 송신 요구한 장치가 송신 권한을 가짐 Peer-to-peer, ALOHA
폴/셀렉션(Poll/Selection) Master(Primary)가 Slave(Secondary)에게 발언권을 주는 방식 Master-Slave, Polling/Selection
  • Polling: Master가 각 Slave에게 "보낼 데이터 있냐?"고 물어보고 있으면 Slave→Master로 데이터 전송
  • Selection: Master가 특정 Slave에게 "데이터 보낼 테니 준비하라"고 알리고 Master→Slave로 데이터 전송

3. 전송 제어 절차 5단계

  1. 회선 연결: 물리적 회선 접속(전화기 다이얼 등)
  2. 데이터링크 확립: 논리적 경로 구성(상대방 확인)
  3. 데이터 전송: 실제 데이터 송수신(흐름/오류 제어 포함)
  4. 데이터링크 해제: 논리적 경로 해제
  5. 회선 절단: 물리적 접속 해제

4. 흐름 제어(Flow Control)

  • 송신 속도가 수신 측 처리 속도를 초과하지 않도록 조절하여 수신 버퍼 오버플로우를 방지한다.
방식 설명 특징/적용 환경
정지-대기(Stop-and-Wait) 한 번에 1프레임 전송, ACK 받으면 다음 프레임 전송 단순, 효율↓, 지연↑
슬라이딩 윈도우(Sliding Window) 한 번에 여러 프레임 전송, 윈도우 크기만큼 ACK 없이 전송 가능 효율↑, 전송지연 긴 선로에 적합
  • 윈도우 사이즈: 수신기가 한 번에 저장할 수 있는 최대 프레임 수(버퍼 크기)
  • ACK Number: 수신기가 다음에 받고자 하는 프레임 번호를 송신기에 알려줌(이전까지는 모두 잘 받았다는 의미)
  • 송신기는 프레임을 보낼 때마다 왼쪽 경계를 이동, ACK 수신 시 오른쪽 경계를 이동한다.

5. 오류 제어(Error Control)

  • 전송 중 발생한 오류를 검출(Error Detection)하고, 필요시 정정(Error Correction)한다.
오류 검출 방법 설명 특징/적용
패리티 체크(Parity) 1비트 리던던시로 1의 개수 홀/짝수 맞춤(odd/even) 단순, 검출력 약함
2차원 패리티 행/열 방향 두 번 패리티 체크 검출력 향상
CRC 다항식 기반 리던던시, 수학적으로 강력한 오류 검출 데이터링크 계층 표준
체크섬(Checksum) 모든 데이터를 더한 값(합계)으로 오류 검출 네트워크/전송 계층 등
기타(정마크, 군계수) 특정 비트 개수 일정, 1의 개수 등 실무 적용 적음(기사 대비용)

오류 정정 방식

구분 설명 예시/특징
ARQ
(Automatic Repeat reQuest)
오류 검출 시 재전송 요청
Stop-and-Wait, Go-back-N, Selective Repeat
데이터 통신 표준
효율성/구현 난이도에 따라 선택
FEC
(Forward Error Correction)
리던던시로 수신 측에서 직접 오류 정정(Hamming, BCH, Reed-Solomon) 실시간/재전송 불가 환경
해밍 거리 공식: 2t+1 이상이면 t개 오류 정정
  • ARQ 주요 방식:
    • Stop-and-Wait ARQ: 한 프레임씩, ACK 없으면 재전송
    • Go-back-N ARQ: 여러 프레임 전송, 오류 발생 시 해당 프레임 이후 모두 재전송
    • Selective Repeat ARQ: 오류 프레임만 재전송(효율↑, 구현 복잡)
  • FEC 주요 코드: Hamming Code(1비트 오류 정정), BCH/Reed-Solomon(다중 오류 정정)
  • 해밍 거리(Hamming Distance): 부호어 간 다른 비트 수, 2t+1 이상이면 t개 오류 정정 가능

정리

데이터링크 계층은 회선 제어, 흐름 제어, 오류 제어를 통해 신뢰성 있는 데이터 전송을 보장한다.
각 제어 방식의 원리, 동작 절차, 장단점, 실제 적용 예시를 정확히 이해하는 것이 중요하다.
728x90

'데이터통신' 카테고리의 다른 글

데이터링크 프로토콜이란?  (0) 2025.06.03
데이터통신 핵심내용 - 1  (1) 2025.05.15
회선구성과 교환방식  (0) 2025.05.05
다중화 기술  (0) 2025.05.03
신호 변환과 변조  (0) 2025.04.29

Node.js 설치 확인하기

프론트엔드 개발을 시작하려면 우선 Node.js가 정상적으로 설치되어 있는지 확인해야 합니다.


 아래 명령어를 터미널에 입력하여 Node.js가 설치되었는지 확인 가능합니다.

node -v
npm -v

Vite로 프론트엔드 프로젝트 생성하기

Vite라는 프론트엔드 빌드 도구로 프로젝트를 시작합니다. (2025년 5월 기준)

 

1. 터미널 위치 확인

터미널에서 프로젝트를 진행하고 싶은 위치로 이동해야 합니다.

터미널에서 ls를 입력하여 현재 경로 확인
cd 원하는 경로 를 입력하여 경로 이동

 

2. Vite로 프로젝트 초기화

아래 명령어를 입력하면, Vite가 자동으로 최신 버전의 프로젝트를 생성합니다.

npm create vite@latest

•  Project name

프로젝트 이름을 입력합니다.

(엔터를 누르면 현재 폴더명이 자동 적용됩니다.)

• Select a framework:
│  ○ Vanilla
│  ○ Vue
│  ● React
│  ○ Preact
│  ○ Lit
│  ○ Svelte
│  ○ Solid
│  ○ Qwik
│  ○ Angular
│  ○ Marko
│  ○ Others

프레임워크를 선택합니다.

여기서는 React를 선택하며 Vue, Svelte등 원하는 다른 프레임워크가 있을 시 선택 가능합니다.
• 언어 선택: JavaScript 또는 TypeScript 중 원하는 언어를 선택하세요.

 

◆  Select a variant:
│  ● TypeScript
│  ○ TypeScript + SWC
│  ○ JavaScript
│  ○ JavaScript + SWC
│  ○ React Router v7 ↗
│  ○ TanStack Router ↗
│  ○ RedwoodSDK ↗

언어 선택입니다.

JavaScript 또는 TypeScript 중 원하는 언어를 선택하세요.

설치가 완료되면, 아래 명령어로 프로젝트 폴더로 이동합니다.

cd 프로젝트 폴더명

 

3. 필요한 패키지 설치

프로젝트 폴더 안에서 아래 명령어를 입력하세요.

npm install

위의 메세지를 입력하면 프로젝트에 필요한 모든 패키지가 설치됩니다.

 

4. 개발 서버 실행

아래 명령어를 입력하면 개발 서버가 실행됩니다.

npm run dev

터미널에 표시된 주소(예: `http://localhost:5173`)를 브라우저에 입력하면 프로젝트의 기본 화면이 나타납니다.


 프로젝트 구조

프로젝트 폴더 안에는 다양한 파일들이 설치되어 있습니다.

• src/: App.jsx 또는 App.tsx, main.jsx 또는 main.tsx
• index.css
• public/: favicon.ico 등 정적 파일
• package.json: 프로젝트 정보와 설치된 패키지 목록

 

불필요한 파일/코드 삭제(컴포넌트 수정)

프로젝트 폴더 안의 `src/App.jsx` 또는 `App.tsx` 경로의 파일을 열어 수정이 가능합니다.

프로젝트의 내용을 초기화 하기 위해 아래 파일/코드를 삭제하거나 비웁니다.

src/App.tsx(JSX)

function App() {
  return <div></div>;
}
export default App;

 

- src/assets/ 폴더: 전체 삭제 (로고, 이미지 등)
- src/App.css: 삭제
- src/index.css: 내용 전체 삭제하거나 최소화(원한다면 파일 자체도 삭제 가능하나, main.tsx에서 import도 지워야 합니다.
- src/vite-env.d.ts: 타입스크립트라면 유지

public 폴더
- public/vite.svg 등 이미지 파일 삭제
- public/favicon.ico: 필요 없으면 삭제

코드에서 import 정리
- main.tsx(JSX)에서 import './index.css'; 등 불필요한 import 삭제
- App.tsx에서 import './App.css'; 등 삭제

index.html에서 타이틀/메타태그 변경
- public/index.html 파일에서 `<title>`, `<meta>` 등도 원하는 대로 비우거나 수정


남는 파일 구조 예시

src/

  App.tsx
  main.tsx
  vite-env.d.ts (TS인 경우)
public/
  index.html
package.json

 


정리

 

 App.tsx: 완전히 빈 컴포넌트
  assets, css, 샘플 코드, 이미지: 모두 삭제
 index.html: 타이틀 등도 초기화
 불필요한 import: main.tsx, App.tsx에서 모두 삭제

• 코드 정리: ESLint, Prettier를 설치하면 코드가 더 깔끔해집니다.
• 버전 관리: `git init`으로 Git 저장소를 만들면 프로젝트를 안전하게 관리할 수 있습니다.
• 확장 기능: 라우터, 상태관리 등은 프로젝트가 커지면 추가하세요.

 

이렇게 하면 완전 상태의 프로젝트가 됩니다.  
이후부터는 원하는 컴포넌트, 스타일, 이미지를 자유롭게 추가하면서 개발이 가능해지고

실제로 많은 개발자들이 이렇게 정리해서 "나만의 템플릿"을 만들어 사용합니다.  

또한 이렇게 정리한 뒤, 이 상태를 GitHub에 올려두면 다음 프로젝트부터 degit 등으로 바로 복제해서 쓸 수 있습니다.

 

위의 내용으로 Vite를 이용하여 React의 기본적인 세팅 방법을 알아보았습니다.

추후에 라우팅, 컴포넌트 분리, API 연동 등 더 심화된 내용을 포스팅 하겠습니다.

728x90

'React' 카테고리의 다른 글

[React] Props(프롭스)란?  (0) 2025.05.28
[React] 리액트 타입 연결하기  (0) 2025.05.28
[React] UseState란?  (0) 2025.05.27
[React] UseMemo란?  (0) 2025.05.22
[React] React Router 설정방법  (2) 2025.05.21

프론트엔드 개발 첫번째 프로젝트 시작입니다.
개발 과정을 블로그에 포스트를 오늘부터 진행합니다.

728x90

'무비넷' 카테고리의 다른 글

웹앱 성능 최적화  (0) 2025.09.02
로컬스토리지 연결(워치리스트 컴포넌트)  (0) 2025.05.29
[React] 클릭시 이미지 변경하기  (0) 2025.05.28
[React]리액트 타입 연결  (0) 2025.05.23
프롭스 연결하기  (0) 2025.05.22