분류 전체보기
[운영체제/OS] Threads & Synchronization 스레드&동기화_Mutex Lock, Semaphore
프로세스 내의 제어 흐름은 단일 스레드 프로세스가 있고 멀티 스레드 프로세스가 있습니다. 멀티에서는 하나의 프로세스 내에 여러 제어(control)이 존재합니다. 스레드는 CPU 이용의 기본 단위로서 프로세스와의 차이는 프로세스는 독립적 주소 공간을 가지지만 스레드는 주소공간을 공유하고 명령어만 다르게 합니다. 따라서 동일 프로세스의 여러 스레드는 코드 영역, 데이터 영역, 운영체제 자원 등을 공유합니다. 그리고 각자 flow는 병렬적으로 제어되는 것입니다. 그 덕에 동시에 하나 이상의 작업을 실행할 수 있습니다. 스레드 풀(Thread Pool) 작업을 기다리는 스레드들의 집합 프로세스는 시작할 때 일정 수의 스레드를 생성하여 스레드 풀에 놓는다. 요청 받으면, 풀로부터 서버가 스레드를 깨워 요청 전달..
[운영체제/OS] Frames Allocation Algorithm, Kernel Memory Allocation
동시에 동작하는 여러 프로세스에게 제한된 가용 메모리를 효과적으로 할당해야 합니다. 그래서 각 프로세스에게 할당되는 메모리 프레임 수를 정해야 합니다. (독점이나 starvation 등의 문제 방지) -프로세스당 최소한의 프레임 수 프로세스에 할당되는 프레임 수가 감소하면 page fault 발생 확률이 늘어나 성능 감소. 명령어 실행 완료 전에 page fault가 발생하면 그 명령어 재실행 필요. -프로세스당 최대한의 프레임 수 물리 메모리에 의해 결정된다.(답이 없고 OS가 프로세스에 무리없도록 알아서 할당) Allocation Algorithm -Equal Allocation(동등 할당) : 100 frames을 5 프로세스에게... 각 프로세스에게 20 프레임 할당 나눗셈으로 남는 애들은 buf..
[운영체제/OS] Copy-on-Write와 Page Replacement
Copy-on-Write (COW)는 부모와 자식 프로세스가 메모리의 같은 페이지를 공유할 수 있게 해줍니다. 프로세스 생성을 훨씬 효율적으로 하게 해줍니다. 최적화 기술 중 하나로 쓰입니다. Resourse를 공유하다가 Resource를 수정하는 경우, 이전의 Resource 복사본을 쓰게끔 하는 것입니다. 그 후에 각각 프로세서의 포인터를 변경만 해주면 됩니다. 원래는 zero-fill-on-demand 페이지들의 pool로부터 할당됩니다. 0으로 채워서 reset하는 것이죠. Page Replacement Free Frame이 만약에 없다면 어떻게 하는가? Page replacement - 새 page 위해 기존 page(잘 안 쓰이는 애, 가급적 수정 안 된 애)를 내쫓는다. (최대한 overhe..
[운영체제/OS] Page Fault와 Demand Paging
Page Fault 페이지를 참조하는데, 그 페이지에 대한 첫 참조에서 OS가 막혀버린다면(trap, 즉 software interrupt 발생), page fault가 발생된겁니다. OS가 보았을 때 1. (1) invalid 참조라면 abort를 하고, (2) 그냥 메모리에 없는 경우- 두 가지 중 하나로 판단 2. free frame을 찾음 3. 페이지를 disk로부터 frame에 swap해줌. 4. page table을 유효한 값으로 validation bit을 v로 변경해줌. 5. page fault를 발생시켰던 명령어를 다시 실행. (stop->ready 단계로) Demand Paging 프로세스에서 페이지를 프로세스 생성 시에 모두 할당하는 게 아니라, 필요할 때마다 동적으로 할당하는 기법입..
[데이터베이스/DB] SQL의 DML기능_Select SQL 문장
이전 게시글에서 SQL의 DDL 기능을 알아보았어요. [데이터베이스 DB] - [데이터베이스/DB] 데이터베이스 언어_DDL, DML, DCL, SQL의 DDL기능 [데이터베이스/DB] 데이터베이스 언어_DDL, DML, DCL, SQL의 DDL기능 DBMS는 여러가지 데이터베이스 언어를 지원합니다. 기능으로 나누면 DDL, DML, DCL 이렇게 분류할 수 있습니다. 표현방법으로 나누면 절차적언어(Procedural)와 비절차적/선언적(Non-procedural(declaritive)) hidemasa.tistory.com 이번엔 SQL의 DML기능을 알아볼게요. SQL은 DML기능을 하는 대표적 문장 네 가지 키워드를 제공해요. -Select -Insert -Delete -Update 이는 명령어(연..
[데이터베이스/DB] 데이터베이스 언어_DDL, DML, DCL, SQL의 DDL기능
DBMS는 여러가지 데이터베이스 언어를 지원합니다. 기능으로 나누면 DDL, DML, DCL 이렇게 분류할 수 있습니다. 표현방법으로 나누면 절차적언어(Procedural)와 비절차적/선언적(Non-procedural(declaritive)) 언어로 나눌 수 있습니다. DDL(data definition language) 데이터베이스 스키마에 대한 조작을 담당하는 영역이에요. DDL은 스키마생성, 스키마 삭제, 스키마 변경 등을 담당합니다. DDL을 통해 정의된 스키마에 대한 정보는 데이터 사전(data dictionary)에 저장 관리합니다. DML(data manipulation language) 데이터베이스 인스턴스를 조작하는 언어를 DML이라고 하며, 인스턴스의 생성, 조회, 삭제, 변경 등의 기..
[운영체제/OS] Main Memory 메모리 관리 2/2
이전에 다루었던 메모리관리 편을 먼저 읽고 오시는 걸 추천해드릴게요 [운영체제 OS] - [운영체제/ OS] Main Memory 메모리 관리_ Address Binding, Segmentation, Paging, Memory Protection [운영체제/ OS] Main Memory 메모리 관리_ Address Binding, Segmentation, Paging, Memory Protection 명령어가 실행되는 절차는 메인 메모리에서 명령어를 읽어와서 실행하고 결과를 다시 메모리에 저장해요. 하지만 메모리에 접근하는 과정은 단순하지 않고 cycle을 거쳐야 하고 stall(대기)상태에 hidemasa.tistory.com Paging을 위한 메모리의 구조는 너무 크다는 단점을 가집니다. 메모리 비..
[운영체제/ OS] Main Memory 메모리 관리1/2_ Address Binding, Segmentation, Paging, Memory Protection
명령어가 실행되는 절차는 메인 메모리에서 명령어를 읽어와서 실행하고 결과를 다시 메모리에 저장해요. 하지만 메모리에 접근하는 과정은 단순하지 않고 cycle을 거쳐야 하고 stall(대기)상태에 자주 걸립니다. CPU는 메인 메모리와 (CPU의)레지스터에 직접적으로 접근할 수 있어요. 레지스터는 접근이 작은 대신 빠르고 메모리는 크기가 크고 접근이 느려요. CPU가 메모리를 오갈때 stall상태에 자주 안 걸리고 속도를 향상하기 위해 cache(캐쉬)를 CPU와 메모리 사이에 놓습니다. 속도와 protection 이 두 가지가 중요한 요소입니다. protection을 위해서 base 레지스터와 limit 레지스터가 있습니다. base(기준) 레지스터는 가장 작은 물리 메모리 주소(=시작주소)를 가지고, ..
[운영체제/OS] CPU Scheduling_ Multilevel Queue, Multilevel Feedback Queue 스케줄링
[운영체제 OS] - [운영체제/OS] CPU Scheduling_비선점, 선점, FCFS, SJF, Priority, RR 스케줄링 [운영체제/OS] CPU Scheduling_비선점, 선점, FCFS, SJF, Priority, RR 스케줄링 이전 글에서 간단하게 프로세스 스케줄링을 알아보았어요. [운영체제 OS] - [OS/운영체제] Process Scheduling 프로세스 스케줄링 [OS/운영체제] Process Scheduling 프로세스 스케줄링 프로세스- 프로그램이 � hidemasa.tistory.com 앞서서 CPU 스케줄링 네 가지 알고리즘들을 알아보았어요. 라운드로빈(RR)과 선입선처리(FCFS) 스케줄링을 알아야 이번 게시글을 이해하기 편하므로 먼저 이전 게시글을 보고 오시는 걸 ..
[운영체제/OS] CPU Scheduling_비선점, 선점, FCFS, SJF, Priority, RR 스케줄링
이전 글에서 간단하게 프로세스 스케줄링을 알아보았어요. [운영체제 OS] - [OS/운영체제] Process Scheduling 프로세스 스케줄링 [OS/운영체제] Process Scheduling 프로세스 스케줄링 프로세스- 프로그램이 실행된 것 (효율적 관리가 필요) 프로그램은 디스크에 있는 수동적인 성격, 프로세스는 능동적인 성격을 가집니다. 즉, 프로그램은 executable file이 메모리에 load되면(올라오 hidemasa.tistory.com CPU burst 와 I/O burst CPU 활용은 multiprogramming을 통해 성능을 향상시킬 수 있어요. CPU burst는 CPU명령을 수행하는 것을 의미하고 I/O burst는 I/O를 요청한 후 기다리는 시간을 의미해요. 프로세스..
[운영체제/OS] Interprocess Communication (IPC)란?
프로세스들은 independent독립적일 수도 있고 cooperating상호협조적일 수도 있습니다. cooperating한 프로세스들은 공유data를 포함해 프로세스들끼리 영향을 줘요. 정보공유, 속도향상, 모듈화의 목적을 가지고 있습니다. 이를 위해 Interprocess Communication (IPC)를 필요로 하는데요 IPC는 두 가지 모델, Shared memory와 Message Passing이 있습니다. Shared Memory 모델 프로세스들이 공유하고 싶은 메모리의 영역이 있을거에요. communication 에 대한 컨트롤은 OS가 아닌 user 프로세스들이 가지고 있습니다. 가장 중요한 점은 shared memory 에 대해 user 프로세스들이 synchronize(동기화)를 허용..
[운영체제/OS] 운영체제 Operating System는 무엇이고 하는 일은 무엇인가?
운영체제 Operating System이란? 컴퓨터(사용자)와 컴퓨터 하드웨어의 중간자 역할을 하는 프로그램 운영체제의 목적 환경 제공(environment management) 프로세스 제어 관리(process management) 자원 관리(resource management) (자원의 예: 스토리지, 메모리, I/O) 우리가 사용하는 컴퓨터의 작동방식을 하드웨어와 연결지어 생각하면 이해하기 더 쉬울거에요. Computer System Operation Memory는 CPU, disk controller, USB contorller, grapthic adapter로 구성되어 있어요. I/O device와 CPU는 동시에 실행이 가능해요. CPU는 data를 main memory로/로부터 local b..
[데이터베이스/DB] 관계 대수 Relational Algebra_2(추가) 확장관계대수
저번 글에서는 기본적인 관계 대수를 알아보았는데요 [데이터베이스 DB] - [데이터베이스/DB] 관계 대수 Relational Algebra 이번엔 추가적으로 사용되는 관계 대수를 설명해보겠습니다 할당 연산 Assignment Operation → 수학기호를 사용하고 할당 연산을 사용하면서 rename 연산자를 함께 사용하면 중간 결과의 관계 및 속성 이름을 원하는 것으로 변경하면서 할당할 수 있습니다. 교집합 연산 Set Intersection Operation 교집합 연산은 위와 같이 두 번의 차집합으로 표현이 가능해요. 그래서 확장 관계 연산자에 속합니다. 저번 글에서 언급했던 두가지 조건을 마찬가지로 만족해야하는데요. 1. 입력관계에 대해 속성 개수가 같다. 2. 대응되는 속성의 데이터타입이 상호..
[데이터베이스/DB] 관계 대수 Relational Algebra_1 기본대수
관계 대수 Relational Algebra 관계 대수는 관계에 대한 다수 개의 연산을 제공하고 관계 대수를 통해 데이터베이스로부터 구하고싶은 정보를 표현할 수 있습니다. 관계 대수는 기본적인 6개의 연산 -select 선택 연산 : σ -project 투영 연산 : π -union 합집합 연산 : ∪ - set difference 차집합 연산 : - - Cartesian produxt 카타시안곱 연산 : x - rename 재명명 연산 : ρ 선택 연산 Select Operation 선택 연산의 기호는 시그마σ 입니다. 각각의 항은 ∨(or), ∧(and), ¬(not)으로 연결이 가능합니다. 예를 들어, 교수 중에서 CS 과에 속한 교수를 검색하는 것이 선택 연산이에요. 투영 연산 Project Op..
[데이터베이스/DB] 관계형 데이터 모델 Relational Data Model
관계형 데이터 모델을 설명해볼게요 1970년 Codd라는 수학자로부터 제안되어 시작되고 현재까지 개선되어오고 있습니다. 관계형 데이터 모델은 데이터베이스를 관계(relation)와 무결성제약사항의 집합으로 표현합니다. 관계 Relation 터플 Tuple 속성 Attribute 이 "student" 관계는 5 터플과 7 속성을 가집니다. 각 속성은 속성 값으로 허용할 수 있는 값의 집합을 가지고 있으며, 이를 도메인이라고 합니다. 그리고 모든 속성 값은 원자(atomic) 값이어야 합니다. 일반적으로 정수, 실수, 문자, 문자열, 시간, 날짜 등이 원자값입니다. 집합, 리스트, 복합값은 원자값이 아닙니다. Relation Schema and Instance 관계 스키마는 관계 이름과 속성명 나열을 의미합..
[OS/운영체제] Process Scheduling 프로세스 스케줄링
프로세스- 프로그램이 실행된 것 (효율적 관리가 필요) 프로그램은 디스크에 있는 수동적인 성격, 프로세스는 능동적인 성격을 가집니다. 즉, 프로그램은 executable file이 메모리에 load되면(올라오는순간!) 프로세스가 됩니다. 프로세스 상태 Process State new: 프로세스가 created(생성) 되었음 running: Instructions가 executed(실행)중임 waiting: 프로세스가 어떤 event(이벤트) 발생을 대기중 ready: 프로세스가 processor(프로세서)에게 일을 할당 받기를 대기중 terminated: 프로세스가 execution(실행)을 마무리함 CPU switch from Process to Process Process Scheduling 프로세스..
[운영체제/OS] 프로세서, 코어, Context Switching(문맥전환)
프로세서와 코어의 차이 processor: 컴퓨터의 분야에서 무엇인가를 처리, 가공하는 기능을 가진 하드웨어, 소프트웨어이다. CPU(중앙처리장치)는 하드웨어 프로세서의 대표적인 것인데, 컴퓨터 시스템 전체를 하나의 프로세서라 부를 수도 있다. 컴파일러 등을 언어 프로세서라 부르는 것처럼, 어떤 특정 기능, 처리를 하는 소프트웨어도 프로세서라고 부른다. cores: 코어란 각종 연산을 하는 CPU의 핵심요소로, CPU 내부에는 코어 말고도 컨트롤러, 캐쉬메모리 등이 들어있다. 1개면 싱글코어, 2개면 듀얼코어, 3개면 트리플 코어라고 부르며, 많으면 많을수록 일반적으로 처리 속도가 빨라진다. 프로세스 동작방식 (메모리 배치(할당) 방식) 스택(stack): 일시적 데이터들 ex)함수 인자, 리턴 주소, ..
[인공지능/딥러닝/AI] CNN 아키텍처기반의 MNIST 수행하기
콘볼루션층 3개와 완전연결층 1개로 구성된 CNN 아키텍처로 MNIST 검증을 해보도록 하겠습니다. CNN 아키텍처 구현을 위한 텐서플로 API는 다음과 같습니다 콘볼루션(convolution) 연산 수행 API tf.nn.conv2d(input, filter, strides, padding) input: 입력 데이터이며 [batch, in_height, in_width, in_channels] 의 모양입니다. 예를 들어 100개의 배치로 묶은 28x28 크기의 흑백 이미지를 입력으로 넣은 경우, [100, 28, 28, 1] 형태입니다. filter: 콘볼루션 연산에 적용하는 필터이며 [filter_height, filter_width, in_channels, out_channels] 모양입니다. 필터..
[인공지능/딥러닝/AI] 합성곱 신경망 CNN(Convolutional Neural Network)
CNN은 딥러닝을 적용하는 거의 모든 분야에서 사용이 되고 있습니다. 특히 이미지 인식 분야에서는 정확한 성능으로 인해 가장 많이 사용되고 있습니다. 일반 신경망 아키텍처와 CNN 아키텍처의 차이 2020/08/26 - [인공지능 AI] - [인공지능/AI]텐서플로를 이용한 MNIST 딥러닝학습 이전 게시글에서 공부했던 일반 신경망 아키텍처는 입력층,은닉층,출력층으로 이루어져 1. 입력데이터에 대해 2. 피드포워드를 수행하여 출력값 계산하고, 3. 정답T와 출력값을 비교하며 cross-entropy 손실함수 값을 구해서 4.최소가 될 때까지 오차역전파를 이용해 값을 최적화해갑니다. 하지만 합성곱 신경망 CNN 아키텍처는 위 일반신경망의 은닉층 부분이 1개 이상의 콘벌루션층(Convolutional Lay..
[인공지능/AI]텐서플로를 이용한 MNIST 딥러닝학습
2020/06/06 - [인공지능 AI] - [딥러닝/인공지능]MNIST(필기체 손글씨) 이전 게시글에서 MNIST를 다루었는데요, 족히 19시간 이상은 걸렸습니다.. 이렇게 긴 학습 시간이 걸린다면 상당히 비효율적이겠죠 하지만 텐서플로를 이용하여 학습시간을 훨씬 단축시켜줄 수 있습니다! 딥러닝 기본아키텍처와 텐서플로기반 아키텍처의 차이 딥러닝 기본적인 아키텍처는 1. 입력데이터 X와 T를 입력층으로 보내주고 2. 피드 포워드 수행하여 시그모이드 함수 값으로 출력층의 출력 값 y를 계산하고 3. 출력층 출력 값 y와 정답 T를 비교해서 4. 손실함수가 최소가 될 때까지 가중치와 바이어스를 업데이트하는 구조였습니다. 하지만 텐서플로 기반의 딥러닝 아키텍처는 은닉층에서 활성화 함수로 시그모이드 함수가 아닌 ..