학교공부

학교공부/컴퓨터 네트워크

[컴퓨터 네트워크] Application Layer

Network application 네트워크 애플리케이션은 여러 다른 종단 시스템(End Systems)에서 실행되고 네트워크를 통해 서로 통신하는 프로그램을 작성하는 과정이다. 예를 들어, 웹 서버 소프트웨어는 브라우저 소프트웨어와 통신한다. 여기서 "종단 시스템"이란 사용자가 직접적으로 사용하고 제어할 수 있는 장치를 의미한다. 이러한 종단 시스템에는 개인용 컴퓨터, 스마트폰, 태블릿 등이 포함될 수 있다. 네트워크 애플리케이션을 개발할 때 중요한 점은 네트워크 핵심 장치(Network-core devices)에 대한 소프트웨어를 작성할 필요가 없다는 것이다. 네트워크 핵심 장치들은 라우터나 스위치 같은 장비로서, 데이터 패킷의 전송 및 라우팅 등의 기능을 담당한다. 이런 장치들은 일반적으로 사용자 ..

학교공부/운영체제

[운영체제] 스레드와 동시성(Thread & Concurrency)

스레드의 장점 1. 응답성- 프로세스의 일부가 막혀도 실행될 수 있으며, 이는 유저 인터페이스에서 중요하다.- 예를 들어, 사용자 인터페이스 스레드와 백그라운드 작업 스레드를 분리하여 사용자가 프로그램의 응답성을 유지사면서 긴 작업을 처리할 수 있다. 2. 자원 공유- 스레드는 프로세스의 자원을 공유하므로 메모리 공유나 message passing이 더 쉽다.- 스레드는 프로세스의 주소 공간을 공유하므로 변수 등의 데이터를 효율적으로 공유하여 작업을 처리할 수 있다. 3. 경제성- 스레드는 프로세스 내에서 생성되는 것이므로 프로세스를 만드는 것보보다 메모리 및 자원 사용 측면에서 경제적이다.- context switching 보다 thread switching이 overhead가 더 적다. 4. 규모..

학교공부/컴퓨터구조

[컴퓨터구조] Cache

Cache 컴퓨터 시스템에서 빠른 데이터 엑세스를 위해 사용되는 고속 메모리로 CPU와 메인메모리 사이에 위치한다. 컴퓨터가 실행하는 프로그램은 메인 메모리에 저장되어 있지만 CPU가 메인 메모리에서 데이터를 가져오기까지는 상당한 시간이 걸리기 때문에, 프로그램의 실행속도를 향상시키기 위해 캐시가 도입된 것이다. 만약 우리가 책장에서 책을 가져와 책상 위에서 사용한다고 가정해보자. 하지만 책장에서 매번 책을 가져오기에는 번거롭고 시간도 비교적 오래 걸린다. 그래서 앞으로는 책상 위에 작은 책상용 책꽂이를 마련해 자주 사용하는 책 몇 권을 꽂아두기로 했다. 이렇게 책상용 책꽂이를 사용하게 되면서 우리는 책을 조금 더 빠르고 쉽게 가져올 수 있게 되었다. 여기서 책장은 메인 메모리, 책은 데이터, 책장은 C..

학교공부/운영체제

[운영체제] File-System Internals

Mount마운트는 디스크와 같은 특정 물리적 장치를 디렉토리에 연결해주는 작업을 의미한다. 프로세스에서 파일 시스템을 사용하기 위해서는 반드시 파일 시스템이 마운트되어 있어야 하며, 마운트를 수행할 때는 저장장치의 이름과 마운트 포인트를 결정해야 한다.   Root partition운영체제가 설치되는 루트 파티션(Root Partition)은 시스템이 부팅될 때 자동으로 마운트된다. 파일을 구분하는 방식으로는 단일 파일 시스템 내에서 사용되는 inode와 여러 파일 시스템에 걸쳐 사용되는 vnode가 있다.   Virtual File System (VFS)여러 파티션에 서로 다른 file system이 올려져있다면, 파일에 대한 system call을 호출할 때마다 file system에 맞는 함수를 호..

학교공부/운영체제

[운영체제] File system implementation

File System Structure I/O는 block 단위로 전달되고 block은 하나 이상의 sector(512 or 4096 bytes)로 이루어져 있다. 일반적으로 block size는 4096 bytes이고 이건 일반적으로 사용하는 page size와도 일치한다. File system - File system은 데이터를 disk에 어떻게 저장할지를 결정함 - 사용자가 storage에 접근할 수 있는 interface를 제공, logical structure을 physical device에 어떻게 저장할지 결정 - 사용자가 데이터에 효율적이고 편하게 접근할 수 있게 함 위 그림은 파일 접근 과정을 나타내는 계층적 구조를 표현한 것이다. Logical file system 컴퓨터 시스템에서 파일..

학교공부/운영체제

[운영체제] File system interface

File저장장치에 저장되는 논리적 저장 단위- 유저나 애플리케이션이 데이터를 저장하고 불러들이는 방법- 비 휘발성- 프로그램(source, object) 또는 데이터(numeric, character, binary) 파일의 속성들에는 다음과 같은 것들이 있다.파일들에 대한 정보는 directory structure에 있고, directory structure은 disk 내에 존재한다.   File operationsfile operation은 여러가지 있지만 그중에서'Write'은 write pointer가 위치한 부분을 write하고'Read'는 read pointer가 위치한 부분을 read한다.'Reposition'은 seek이라 부르며, 파일 내의 위치를 바꾼다. 이를 통해 write, read ..

학교공부/컴퓨터구조

[컴퓨터 구조] Memory Hierarchy

Virtual vs Physical memory 프로그래머는 virtual memory만을 보고 있어서 메모리 공간이 거의 무한하다고 느끼지만 실제 사용할 수 있는 physical memory 공간은 프로그래머가 추정하는 것보다 훨씬 작다. 시스템(system softeware + hardware)은 virtual memory와 physical memory를 서로 mapping 해준다. 이때 시스템이 physical memory를 잘 관리해준다면 프로그래머 입장에서는 메모리 공간이 엄청 거대하다고 느끼는 것이다. Memory Hierarchy 이상적인 메모리라 함은 공간이 넓고 빠르며 값싼 메모리일 것이다. 하지만 현실적으로 불가능한 일이다. 공간이 넓으면 데이터의 위치를 특정하는데 오래 걸리기 때문에 ..

학교공부/컴퓨터구조

[컴퓨터 구조] Multithreading

Thread란?Thread는 메모리와 레지스터 상태에 대한 명령어 흐름을 나타내며, CPU가 실행하는 기본 단위이다. Thread가 실행 중일 때, 그 상태는 register states로 표현되며 이를 Thread Context라고 부른다. Thread는 프로그램의 병렬 실행을 가능하게 하며, 현대 프로세서 설계에서 중요한 요소이다.   Multithreading이란?Multithreading은 하나의 프로세서가 여러 Thread Context를 가지는 구조를 말한다. 이를 통해 하나의 프로세서가 여러 작업을 병렬적으로 처리할 수 있다. 이러한 방식은 CPU의 유휴 시간을 줄이고 자원의 활용도를 극대화하여 성능을 향상시킬 수 있다.   Multithreading의 장점Multithreading은 다양한..

학교공부/자료구조

[자료구조] Binary Search Tree

오늘은 '이진 탐색 트리'에 대해서 공부해보았다. 우선 이진 탐색 트리에 대해 알기 전에 '트리'라는 개념을 먼저 살펴보자. 이진 트리(Binary Tree) 트리란 그래프의 일종으로, 노드들이 나뭇가지처럼 연결된 형태를 띄는 비선형 자료구조이다. 비선형 자료구조라는 것은 스택, 큐와 같이 하나의 자료 뒤에 하나의 자료가 연결되어 있는 선형 자료구조와 달리 하나의 자료 뒤에 여러 개의 자료가 연결될 수 있는 구조를 뜻한다. 위 그림은 트리의 일종인 이진 트리의 예시 중 하나이다. 이진 트리는 자식 노드를 최대 두 개 가지는 트리를 뜻한다. 여기서 노드(node)란 위 그림에서 사각형 박스를 의미하며 일반적으로 데이터가 그 안에 담긴다. 그리고 이 노드들을 이어주는 선을 엣지(edge)라고 부른다. 어떤 ..

학교공부/운영체제

[운영체제] Main Memory

Memory Protection메모리에서 각 각의 프로세스가 서로 간섭해서는 안되기 때문에 memory protection이 필요함process가 시작하는 메모리 주소를 base, 끝나는 주소를 base+limit로 정하고 이 정보는 각각 레지스터에 담겨있다.   Address BindingCPU는 프로세스를 실행시킬 때 프로세스의 논리적 주소(logical address)를 참고한다. 이때 logical address만으로는 실제 메모리의 주소를 없으므로 logical memory와 실제 메모리의 주소인 physical memory를 연결시키는 작업이 필요하고 이를 address binding이라 한다. source program을 컴파일하면 machine instruction을 가지고 있는 objec..