본문 바로가기

Computer Science18

OSI 7 Layer 와 TCP/IP OSI 7 Layer 란? 네트워크 프로토콜과 통신을 7 계층으로 표현 목적 프로토콜을 기능별로 나누고 계층 별로 구분 벤더(통신장비)간 호환성을 위한 표준이 필요 -> 표준의 발달로인한 쉬운 접근성으로 기술이 발전하게 됨 역사 1970년대 초 네트워크는 정부 또는 특정 벤더에서 독점 개발했으나 공개 형 모델 필요하게 됨 1970년대 말 ISO에 의해 관리 1984 ISO 7498 릴리즈 OSI 7 Layer 모델 Physical - 네트워크 하드웨어 전송 기술 Data Link - 이더넷, 랜카드, Mac 통신, 에러검출/재전송 Network - IP 통신, 라우팅 Transport - TCP / UDP Session - TCP / IP 통신 연결을 수립 / 유지 / 중단 Presentation - 인.. 2022. 2. 16.
네트워크 정의와 구조 네트워크란? 분산되어 있는 컴퓨터들이 자원을 공유할 수 있게 통신망으로 연결한 것 네트워크 형태 LAN(Local Area Network) 사무실 또는 학교 등의 가까운 지역을 한데 묶은 네트워크 WAN(Wide Area Network) 각각 떨어진 LAN 망을 연결, 규모가 큰 네트워크, ISP로 연결 VPN(Virtual Private Network) 가상 사설망 공중망을 사설망처럼 사용, 암호화 네트워크 표준 네트워크 표준기구 ISO 국제표준화 기구 IEEE 미국전기전자협회 (LAN 위주) ITU-T 국제전기통신연합 통신표준본부 (WAN 위주) 인터넷 표준기구 IETF 인터넷 엔지니어 테스크포스 RFC 프로토콜 정의 문서 ex) 이더넷 -> IEEE 802.3 TCP/IP -> RFC 1122 & .. 2022. 2. 15.
컴퓨터 구조와 레지스터 컴퓨터의 구성 요소 하드웨어 중앙처리장치 CPU(Central Processing Unit): 실행 프로그램의 명령 해석, 실행, 장치제어, 각종 레지스터로 구성된다. MPU(Micro Processor Unit): CPU를 LSI(고밀도 집적회로)화 한 일종의 통합 장치 사물 인터넷 디바이스 H/W 플랫폼 (ex - 아두이노: 대표적인 오픈소스 H/W 플랫폼, Respberry Pi 등등) 주변장치 기억장치(Memory unit) RAM(Random Access Memory) DRAM(주기억장치) SRAM (2차 캐시기억장치) ROM(Read Only Memory) 보조기억장치 FlashMemory 하드 디스크 입력장치 소프트웨어 시스템소프트웨어 응용 소프트웨어 주 기억장치와 보조기억장치의 관계 전원 .. 2022. 1. 21.
Pthread Pthread thread 표준 API POSIX thread 또는 Pthread라고 부른다. Pthread API 저수준 API로 100여갸의 함수 제공 유닉스 시스템 핵심 스레딩 라이브러리 다른 스레딩 솔려순도 Pthread 기반으루 구현 Pthread 라이브러리 헤더 파일에 정의 모든 함수는 pthread_로 시작 두가지 그룹으로 나뉜다 스레드 관리: 생성, 종료, 조인, 디태치 함수 등 동기화: 뮤텍스 (상호배제) 등 동기화 관련 함수 기본 라이브러리와 분리된 libpthread 라이브러리에 구현되어 있으므로 컴파일시 명시적으로 -pthread 옵션이 필요하다. gcc -pthread test.c -o test 스레드 생성 // thread: 생선된 스레드 식별자 // attr: 스레드 특정 설정.. 2022. 1. 19.
쉘 스크립트 쉘 스크립트 쉘을 사용해서 프로그래밍을 할 수 있다 서버 작업 자동화 및 운영을 위해 익혀둘 필요가 있다 쉘 명령어를 기본으로 하되 몇가지 문법이 추가된 형태 기본 문법 쉘 스크립트는 파일로 작성 후, 파일 실행 파일의 가장 위의 첫 라인은 #!/bin/bash 로 시작 쉘 스크립트 파일은 실행 권한을 가지고 있어야 한다 일반적으로 파일이름.sh 와 같은 형태로 파일 이름을 작성한다 Hello World 출력 #!/bin/bash echo 'Hello World' 주석 #로 주석처리 변수 선언 변수명=데이터 변수명=데이터 사이에 띄어쓰기는 허용되지 않는다 사용 $변수명 으로 사용된다 #!/bin/bash name="DabinLim" age=29 mycareer="IT" echo $name $age $my.. 2022. 1. 14.
시스템 프로그래밍 - 프로세스 관리 프로세스 관리 프로그램: 바이너리, 코드 이미지, 응용프로그램 또는 실행 파일 프로세스: 실행 중인 프로그램 (메모리 적재 + 프로세스 상태 정보 포함) 스레드 리눅스 프로세스는 기본 스레드 포함 싱글 스레드 프로세스: 기본 프로세스 멀티 스레드 프로세싀: 여러 스레드 존재 프로세스 ID pid, 각 프로세스는 해당 시점에 unique한 pid를 가짐 pid 최대 값은 32768 = 2의 15승 부호형 16비트 정수값 사용 최근 할당된 pid가 200이라면, 그 이후는 201, 202 식으로 할당 $ sudo vi/proc/sys/kernel/pid_max 프로세스 계층 최초 프로세스: init 프로세스, pid 1 init 프로세스는 운영체제가 생성 (단군 할아버지) 다른 프로세스는 또다른 프로세스로부.. 2022. 1. 10.
시스템 프로그래밍 핵심 기술 시스템 프로그래밍 기반 요소 시스템 콜 C 라이브러리 C 컴파일러 API 응용 프로그램과 분리된 하위 호환 인터페이스 ex) 시스템 콜 래퍼, 입출력 라이브러리 등 동적, 정적 라이브러리가 있음 C 라이브러리 유닉스 C 라이브러리 - libc 리눅스 C 라이브러리 - GNU libc-glibc (지립씨, 글립씨) 시스템콜, 시스템콜 래퍼, 기본 응용 프로그램 기능 포함 C 컴파일러 유닉스 C 컴파일러 - cc 리눅스 C 컴파일러 - GNU cc- gcc (지씨씨) 리눅스에 gcc 설치 sudo apt-get install gcc GCC 컴파일 과정 $ gcc -o test test.c (1) 전처리기 소스 파일의 전처리기 부분을 처리하고 test.i 임시파일을 생성 (2) C컴파일러 전처리된 파일 tes.. 2022. 1. 9.
시스템 프로그래밍 - 쉘 사용법 쉘 사용자와 컴퓨터 하드웨어 또는 운영체제간 인터페이스 사용자의 명령을 해석해서 커널에 명령을 요청 관련된 시스템콜을 사용해서 프로그래밍이 작성되어 있다. 쉘 종류 Bourne-Again Shell(bash): GNU 프로젝트의 일환으로 개발됨, 리눅스 디폴트 Bourne Shell (sh) C Shell Korn Shell (ksh): 유닉스에서 가장 많이 사용됨 다중 사용자 관련 명령어 whoami 로그인한 사용자 ID를 알려줌 $ whoami ubuntu passwd 로그인한 사용자 ID의 암호 변경 $ passwd (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated su.. 2022. 1. 6.
시스템 프로그래밍 - 리눅스 리눅스 서버, 클라우딩 컴퓨팅에 많이 사용되는 운영체제 소프트웨어의 대부 UNIX 계열 운영체제 plain 하게 프로그래밍이 가능 C언어 표준에 맞춰 프로그래밍이 가능하다. ANSI C - C언어 표준 리눅스의 역사 리눅스의 시작 리누스 토발즈 (Linus Torvalds)가 개발 대학에 있는 UNIX 컴퓨터를 집에서 쓰고 싶다는 생각을 가지고 LINUX 운영체제 개발 다중 사용자, 다중 작업(시분할 시스템, 멀티 태스킹)을 지원하는 유닉스와 유사한 운영체제 GNU (Gnu is Not Unix) 프로젝트 유닉스 운영체제를 여러 회사에서 각자 개발하고 소스를 공유하지 않음 리차드 스톨만이 초기 컴퓨터 개발 공동체의 상호협력적 문화로 돌아갈 것을 주장하며 1985년도에 GNU 선언문 발표 GNU 프로젝트를.. 2022. 1. 3.
파일 시스템 파일시스템 운영체제가 저장매체에 파일을 쓰기 위한 자료구조 또는 알고리즘 파일 시스템이 만들어진 이유 0과 1의 데이터를 비트 단위로 관리하기에는 오버헤드가 너무 크다. 블록 단위로 관리하기로 함 (보통4KB) 블록마다 고유 번호를 부여해서 관리한다. 사용자가 각 블록 고유 번호를 관리하기 어려움 (추상적, 논리적 객체가 필요) 파일 개념이 생김 사용자는 파일 단위로 관리, 각 파일에는 블록 단위로 관리 저장매체에 효율적으로 파일을 저장하는 방법 가능한 연속적인 공간에 파일을 저장하는 것이 좋으나 외부 단편화 문제가 발생 외부 단편화, 파일 사이즈 변경 문제로 불연속 공간에 파일 저장 기능 지원이 필요 블록체인: 블록을 링크드 리스트로 연결 (끝에 있는 블록을 찾으려면 처음 블록부터 주소를 따라가야 한다.. 2022. 1. 3.