전체 글(112)
-
동기화 응용
컨디션 변수 스레드 실행 중간 조건 검사 부모 스레드가 작업을 시작하기 전 자식 스레드가 작업을 끝냈는지 알고 싶다면? 회전(spin) 기반 공유 변수 활용 but 바쁜 대기 문제가 남음 컨디션 변수(Conditional variable) 일종의 큐 자료 구조 어떤 실행의 상태(또는 어떤 조건)가 원하는 것과 다를 때, 조건이 참이 되기를 기다리며 스레드가 대기할 수 있는 큐 스레드의 바쁜 대기 문제를 해결할 수 있음 pthread_cond_t c; 컨디션 변수 c 정의] pthread_cond_wait(pthread_cond_t *c, pthread_mutex *m) 스레드가 스스로를 재우기(sleep) 위하여 호출 mutex lock변수 m의 락을 해제하고, 스레드를 잠재움 다른 스레드로부터 시그널을..
2023.09.26 -
동기화(Synchronization)
협력적 프로세스(Cooperating Process) 협력적 프로세스란? 동시에 실행되며 서로 영향을 끼치는 프로세스들 데이터를 공유하는 프로세스들 동시 처리 (concurrent processing) 협력적 프로세스들이 동시에 공유 데이터에 접근해서 연산작업을 수행하는 것 하나의 프로세스에 의해 데이터 접근 및 조작을 동일한 데이터에 접근한 기존 프로세스의 연산 작업에 영향을 끼침 데이터 불일치(data inconsistency) 협력적 프로세스들이 서로 다른 공유 데이터 값을 가지고 연산 작업을 처리 통제되지 않은 협력적 프로세스 실행 순서에 의해 발생 은행 공유 계좌 문제 입금 및 인출을 위한 협력적 프로세스 처리 두 개의 협력적 프로세스 A와 B가 은행 공유 계좌에 접근 프로세스 A는 계좌에 돈을..
2023.09.16 -
CPU 스케쥴링
스케쥴링 개요 스케쥴링이 필요한 이유? 제한된 컴퓨팅 자원 위에서의 멀티 프로세싱을 해야 하기 때문 단일 CPU코어에서는 한 시점에 오직 하나의 프로세스만 처리 가능 CPU 스케쥴링 레디큐에 있는 프로세스 중 하나를 선택하여 CPU 자원 할당 스케쥴링 수행 시점 프로세스가 running 상태에서 waiting상태로 변경될 때 프로세스가 running 상태에서 ready상태로 변경될 때 프로세스가 waiting 상태에서 ready상태로 변경될 때 새로운 프로세스가 ready 상태가 될 때 running상태의 프로세스가 종료될 때 비선점 스케쥴링(Nonpreemptive scheduling) Running 상태의 프로세스가 waiting상태로 바뀌면 트리거링 Running 상태의 프로세스가 종료되면 트리거링..
2023.09.16 -
저수준에서의 프로세스 관리
듀얼 모드(Dual Mode) 모드비트(Mode bit) 운영체제 코드의 실행과 일반 사용자 정의 코드의 실행을 구분하기 위해 사용 사용자 모드(User mode) 모드비트 = 1 컴퓨터 시스템이 사용자 응용을 실행할 때 설정 커널 모드(Kernel mode) 모드 비트 = 0 운영체제가 컴퓨터 시스템에 대한 제어를 획득한 후 코드 실행 특권 명령(Privileged instruction) 컴퓨터 시스템 보호를 위해 운영체제만이 접근할 수 있는 명령어 집합 커널모드에서 실행 컴퓨터 시스템의 명령 실행 주기 시스템 부트시 하드웨어는 커널 모드에서 시작 운영체제 적재 이후 사용자 모드에서 사용자 프로세스 실행 트랩/인터럽트 발생 시 커널 모드로 전환(모드비트=0) 이후 사용자 프로세스가 제어 획득(모드비트=..
2023.09.16 -
프로세스
프로세스 프로세스란? 프로그램에 대한 실행 인스턴스(running instance) 실행 가능 파일(executable file)이 메모리에 적재(load)될 때 프로그램은 프로세스가 됨 멀티 프로세싱 제한된 컴퓨팅 자원 하에 다수의 프로세스가 실행 CPU utilization(CPU이용률), User interaction(렉이 없는 즉각적인 서비스), Processing speed(처리 속도) 프로세스 적재 프로세스의 메모리 할당 텍스트(text) : 프로세스 인스트럭션 코드 프로세스를 처리할 수 있도록 하는 명령어들이 저장된 영역 데이터(data) : 프로세스 데이터, 정적/전역 변수들 프로그래밍이 프로세스로 시작될 때 할당되고 프로그램이 종료되면 할당 해제됨 힙(heap) : 동적 메모리 할당(예:..
2023.09.16 -
리눅스
sudo su root 대부분의 시스템 관련 commands는 root권한 필요 sudo(superuser do) : "root"권한을 가지고 커맨드 실행 su(switch user) : 접속 계정을 변경 apt/apt-get 데비안 기반 리눅스 계열에서 패키지 배포를 위해 사용하는 인터페이스 apt(apt-get) update : apt 패키지 레파지토리 목록 갱신, root권한 요구 apt(apt-get) upgrade : apt 패키지 업그레이드, root권한 요구 망 접속 프로토콜 Telnet 바이트 스트림에 기반한 authorization 낮은 보안성 ssh(secure shell) login/password입력을 통한 autorization 리눅스에서 원격 접속 프로토콜로서 주로 사용 리눅스 ..
2023.09.16 -
컴퓨터 시스템과 운영체제
컴퓨터 시스템의 4가지 요소 하드웨어(HW) 기본적인 컴퓨팅 자원을 제공 중앙처리장치(CPU), 메모리, 입출력(I/O) 장치 등 운영체제(Operating systems) 다양한 사용자를 위해 다양한 응용과 컴퓨터 하드웨어 사이의 interaction을 제어 및 조정 프로그램(system programs/application programs) 사용자의 문제를 해결하기 위해 컴퓨팅 자원을 사용 워드 프로세서, 스프레드시트, 컴파일러, 웹 브라우저 등 사용자(users) 사람, 기계, 혹은 다른 컴퓨터들 사용자 관점에서의 운영체제 사용자의 관심 이슈 프로그램을 사용하기 편리할 것 프로그램을 실행할 때 성능이 좋을 것 사용자가 신경 쓰지 않는 이슈 전체 시스템의 자원 이용률 컴퓨터 종류에 따라 달라지는 이슈..
2023.09.16 -
운영체제의 개요 및 종류
운영체제란? 응용과 컴퓨터 하드웨어 사이에 위치하는 레이어 운영체제는 일반적인 프로그램과 하드웨어 사이의 중간 소프트웨어 운영체제의 역할 프로그램의 구동 및 운영을 쉽게 할 수 있도록 함 프로그램들이 자원을 공유할 수 있도록 함 프로그램들이 디바이스와 interaction 할 수 있도록 함 운영체제와 하드웨어 운영체제의 관여 작업 개요도 CPU : 입력된 data를 가지고 code(혹은 프로그램) 실행 Memory : 디스크로부터/에 code와 data 읽기/쓰기 작업 수행 Disk(Storage) : code와 data를 반영구적으로 저장 사용자가 프로그램을 실행(data를 함께 사용) 프로그램이 프로세스 형태로 메모리에 올라감 CPU가 메모리에 올라와 있는 프로세스를 구성하는 명령어들을 불러와서 연산..
2023.09.16 -
컴퓨터의 개요
컴퓨터의 종류 메인 프레임 방 하나 정도의 크기 1980년 이전까지 정부기관, 대학, 은행, 연구소 등에서 사용 현재도 보안 + 신뢰성이 요구되는 기관에서 사용 터미널(모니터 + 키보드)을 통한 다중 사용자 접속 시분할(Time sharing)기반 작업 처리 방식 슈퍼 컴퓨터/병렬컴퓨터 발열 및 전압 문제 때문에 CPU 클록을 계속 올리는 것이 어려움 대규모의 CPU 코어 / GPGPU 병렬처리 ENIAC(1946), 500F, 탄도 계산 및 일기예보용 Cray-1(1975), 160MF(mega-flops) Sunway TaihuLigh(2016), 125.4PF(peta-flops) SUMMIT(2018), 148PF(peta-flops) 일본 RIKEN 후가쿠(2020), 415.53PF(peta-..
2023.09.16 -
컴퓨터의 역사
컴퓨터의 초기 역사 기계식 계산기 Blaise Pascal (1642) :덧셈, 뺄셈이 가능한 기계식 계산기 Gottfried Leibniz (1672) : 곱셈, 나눗셈이 가능한 계산기 Charles Babbage (1871) : Analytic engine, 천공카드, 범용 계산 튜링 머신 튜링 머신은 실제 존재하는 기계가 아닌 수학 모형(오토마타) 기계(컴퓨터)를 수식으로 표현할 수 있는 방법론 고안 앨런 튜링(ALan Turing)이 1937년에 논문 발표 연산, 입력, 출력 조합으로 이론산 모든 컴퓨터 알고리즘 구현 가능 폰노이만 아키텍처(Von Neumann Architecture) 1945년 폰노이만이 EDVAC 관련 보고서에서 설명한 컴퓨터 구조 현대 컴퓨터 구조의 틀 정립 스위치-전선 기..
2023.09.16 -
Multiplexing
Multiplexing 다중화 하나의 물리적 라인이 다수개의 링크를 제공 여러 개의 source and destination 쌍이 하나의 물리적 링크를 공유 물리적 링크의 용량이 충분히 크고 이것을 n개의 source and destination에 공유 FDM, TDM, STDM Frequency Division multiplexing 주파수 대역을 나눈 것 sub carrier frequency 서브 반송 주파수 시간축 시간을 연속적으로 사용 transmitter에서 input이 subcarrier에 의해 modulation 한 후 합함 사용되는 주파수가 다르므로 영향을 미치지 않음 receiver에서 bandpass filter를 사용하여 측정한 대역만 출력한 후 반송주파수 사용하여 각각 디모듈레이션..
2023.09.16 -
Data Link Control Protocols
Data Link Control Protocols 데이터를 전송하기 위해, control을 하기 위해, 물리적 층 위에 논리적 층이 추가되어야 한다. L1 : physical layer L2 : data link layer point와 point 간의 신뢰성 있는 전송 보장 error control flow control L3 : network layer routing L4 : Transport layer end와 end 사이 신뢰성있는 전송 보장 error control L5 : session layer L6 : presentation layer L7 : application layer 하나의 링크를 통해 데이터의 교환을 다뤄야 함 frame synchronization 프레임 동기화 언제 프레임이 시..
2023.09.16