일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- C언어
- JUCE 튜토리얼
- 코딩
- gui
- 백준
- C++
- BOJ
- C++ library
- Docker
- 운영체제
- C++ gui 라이브러리
- 리듬게임
- tour of go
- OS
- 연결리스트
- Nebula
- go channel
- 알고리즘
- a tour of go
- LOB
- JUCE library
- c++ heap
- go
- 공룡책
- C++ gui
- JUCE라이브러리
- vim-go
- 프로그래밍
- 자료구조
- JUCE
- Today
- Total
목록OS (20)
CafeM0ca
rz는 파일을 업로드 하는 명령어고 sz는 파일을 다운로드 하는 명령어다. 리눅스 시스템에서 기본으로 제공하는 명령어는 아니다. apt 패키지 관리자로 설치할 수 있다. sudo apt install lrzsz 더 공부해보면 좋은 것 FTP SFTP(Secure FTP) : ssh를 지원하는 FTP
Docker 정리 도커의 컨테이너 개념은 프로세스 분리 및 애플리케이션 패키징 컨테이너 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리, 설정 등 소프트웨어를 실행하는 데 필요한 모든 것을 포함하는 경량의 독립된 실행 가능한 패키지 도커의 핵심적인 부분(도커 엔진으로 하는 것) 오케스트레이션(orchestration) : 컨테이너 그룹 내 컴포넌트의 관리 및 조정 네트워크 스케쥴링 및 보안 기능을 갖춘 경량의 애플리케이션 런타임 도커의 이미지는 컨테이너의 변경할 수 없는 스냅샷을 말함. docker run --rm hello-world 위 명령은 이미지는 컨테이너가 되어 타입이나 인스턴스와 같은 것으로 간주됨. 타입은 동작을 구성하는 필드와 메서드를 정의한 것을 말함. 인스턴스는 이 타입의 원래..
7.1 윈도우와 리눅스가 multiple locking 매커니즘을 구현했는지 설명하시오. spinlock, mutex lock, semaphore, condition variable이 사용되는 상황을 설명하시오. 각각의 경우에 메커니즘이 왜 필요한지 설명하세요. multiple locking 매커니즘으로 spinlock,mutex lock, semaphore, condition variable을 제공한다. spinlock : 주로 바쁜 대기에 사용함. 구현이 편리. 바쁜대기가 sleep queue에 진입하는 것 보다 오버헤드가 낮음. mutex lock : 한 프로세스에서 여러 스레드가 리소스에 접근하는데 이 때 리소스를 잠그는데 유용하다. semaphore : 프로세스간 공유 리소스에 대해 접근할 때 ..
목표 bounded-buffer, readers-writers, dining-philosophers 동기화 문제를 설명한다. 리눅스/윈도우에서 프로세스 동기화 문제를 해결하기 위한 특정한 툴을 소개한다. POSIX와 Java가 프로세스 동기화 문제를 풀어내는지 설명한다. POSIX와 Java API를 사용하여 프로세스 동기화 문제에 대한 해결방법을 디자인하고 개발하는 솔루션에 대해 알아본다. 고전적인 동기화 문제 생산자와 소비자 프로세스는 위 데이터 구조를 공유한다. n개의 버퍼로된 pool이 있고 각 버퍼는 하나의 항목을 저장할 수 있다고 가정하자. mutex 세마포어는 버퍼 pool에 상호 배제적으로 접근하기 위해 제공되며 1로 초기화 된다. empty와 full 세마포어는 빈 버퍼와 가득찬 버퍼의 ..
챕터5 CPU 스케줄링 CPU가 놀고 있으면 ready queue에서 프로세스를 뽑아서 실행시킨다. 이 작업은 CPU 스케쥴러가 담당한다. ready queue는 우선순위 큐, 트리, 단방향 링크드 리스트로 구현될 수 있다. ready queue에는 PCB가 들어 있다. CPU burst : 프로세스가 cpu를 사용하는 시간 dispatcher CPU 스케줄링의 포함된 기능중 디스패처가 있다. 디스패처는 CPU 스케줄러가 선택한 프로세스에 cpu 코어를 제어하는 모듈이다.(?) 한 프로세스에서 다른 프로세스로 context을 교환하는 일 사용자 모드로 전환하는 일 프로그램을 다시 실행하기 위해 사용자 프로그램의 알맞은 위치로 jumping하는 일 디스패처는 모든 context switch에서 발생하므로 ..
챕터4 연습문제 1번 : 멀티스레딩이 싱글스레딩 보다 성능이 좋은 프로그래밍 예시 3가지를 드시오 독립된 일들을 각각 스레드에게 맡길 때 task의 밸런스를 맞출 수 있고 데이터의 의존성을 식별할 수 있다.(network I/O, UI 렌더링 같은 일을 동시에 처리할 때) (테스크 병렬) 응답성, 자원 공유, 경제성, 규모성 data 단에서 데이터를 나눠서 스레드로 처리할 때 (데이터 병렬) 2번 : 암달의 법칙을 사용해서 어플리케이션이 60% 병렬 컴포넌트를 갖고 있을 떄 (a)2개의 프로세스 코어를 사용할 때와 (b)4개의 프로세르 코어를 사용할 때 값을 계산하세요. (a) 1 / ((1 - 60%) + 0.6 / 2) = 1 / (0.4 + 0.3) = 1 / (0.7) = 10 / 7 = 1.43..
챕터4 스레드 스레드는 thread id, program counter(PC), register set, stack으로 이루어져 있다. 스레드는 같은 프로세스의 포함되어 코드 영역, 데이터 영역, 열린 파일이나 시그널과 같은 운영체제 리소스를 공유한다. Parallelism의 종류 Data parallelism 데이터를 쪼개서 연산을 수행하는 것 배열이라는 데이터가 있으면 반으로 쪼개서 2개의 작업으로 나눠 연산 진행 Task parallelism 스레드간 각각의 고유한 일을 맡아서 처리하는 것 thread의 cancellation(취소) 취소되어야 할 스레드를 target thread라고 부른다. 두 가지 방식으로 취소할 수 있다. asynchronous cancellation : 한 스레드가 목적 스..
3.1) 3.30 Figure를 보고 LINE A의 결과물이 무엇인지 설명하세요. 코드를 실행하면 위와 같은 결과가 나온다. 의문점은 pid = fork()를 통해서 자식프로세스도 똑같은 코드를 갖게 될 텐데, 재귀적으로 fork()를 하는거라고 생각할 수 있다. forum.falinux.com/zbxe/index.php?mid=C_LIB&document_srl=412814 에 따르면 fork된 자식 프로세스는 딱 하나가 다른데, pid = fork()한 부분이 없어지고 pid = 0으로 갖게 된다. wait(NULL)은 자식 프로세스를 기다린다. 3.2) 부모프로세스에서 초기화를 포함하면 Figure 3.31에서는 얼마나 많은 프로세스가 생성되나요? 초기 부모프로세스 1개 첫번째 fork()에서 부모 ..
틀린 내용 있으면 꼭 댓글 달아주세요. 프로세스 프로세스는 실행 중인 프로그램 프로그램은 passive entity(디스크에 저장된 file) 프로세스는 acitive entity(프로그램이 메모리에 올려진 상태에서 실행되는 것) process state 프로세스는 실행시 상태가 바뀌며 아래의 상태로 정의할 수 있다. new : 프로세스가 생성된 것 Running : 명령어들이 실행중인 것 Waiting : I/O와 같은 이벤트로 인해 대기중인 것 Ready : 프로세서(프로세스를 실행시키는 유닛)에게 할당되기를 기다리는 것 Terminated : 프로세스 실행이 끝난 것 PCB PCB는 아래의 정보를 갖고 있다. 프로세스를 운영체제 위에서 표현(보여주기 위한) 정보들을 담고 있다. (프로세스별로 바뀌는..
go를 사용하고 있는데 vim-go도 잘 설치학 코드창을 띄우고 작성을 하는데 아무런 문법 지원이 안되더라. 그래서 ycm에서 go 지원하게끔 재설치했다. cd ~/.vim/plugged/YouCompleteMe ./sh install.sh --go // ./sh install.sh --all 다른 언어 다 설치할때.. https://github.com/ycm-core/YouCompleteMe#installation ycm-core/YouCompleteMe A code-completion engine for Vim. Contribute to ycm-core/YouCompleteMe development by creating an account on GitHub. github.com