본문 바로가기

전체 글

(371)
[Ubuntu] 윈도우<-> 리눅스 공유 폴더 사용하기 Ubuntu 18.04 LTS 에서 공유폴더를 사용하여 윈도우와 쉽게 폴더를 주고받을 수 있다. 먼저, 윈도우에서 공유폴더로 사용할 폴더를 하나 생성한다. 경로 : C:\Users\owner\shared 그리고 설치한 우분투 가상머신의 설정에서 공유폴더를 선택한다. 머신 폴더를 선택한 후 사이드에 있는 + 버튼을 클릭하여 경로를 설정한다. 확인을 눌러 공유 폴더를 추가해준다. 이제 가상머신에서 마운트를 진행해준다. 장치 - 게스트 확장 CD 이미지 삽입을 누르면 virtualbox 상에서 마운트를 진행한다. 보통 공유 폴더는 /media/sf~ 의 경로와 이름으로 생성이 되는데 root 권한으로도 접근이 불가한 경우가 있다. 권한을 확인해보면 root에게 권한이 부여된 것이 아니라 vboxsf에 권한이 ..
[Network] UDP UDP(User Datagram Protocol) 트랜스포트 계층의 통신 프로토콜 TCP UDP 신뢰성이 낮은 프로토콜로서, 완전성을 보장하지 않는다. 가상회선을 확립할 필요가 없고, 유연하며 효율적인 데이터 전송에 적용된다. UDP 주요 기능과 특징 비연결성 / 비신뢰성 순서화되지 않는 Datagram 제공 ACK 없음 > 메시지가 올바르게 도착했는지 알 수 없다. 순서제어 없음 > 수신된 메시지의 순서를 보장하지 않는다. 흐름제어 없음 > check sum을 제외한 오류 검출 및 제어 없음 논리적인 가상회선 연결이 필요없음 > 데이터그램 지향의 전송계층용 프로토콜 실시간 응용 및 멀티캐스팅 가능 빠른 요청과 응답으로 실시간 통신에 적합 다수의 지점에 전송 가능 헤더가 단순하다. 헤더의 고정크기는 8바..
[OS] IPC 프로세스 간 통신 IPC IPC IPC 설비들 IPC (Interprocess Communication) 리눅스 커널의 구조를 보면 process는 완전히 독립된 실행 객체이다. 서로 독립되어있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있다. 그러나 서로 간의 통신이 어렵다는 문제가 존재한다. 이를 위해서 커널 영역에서 IPC라는 내부 프로세스 간 통신을 제공하고, 프로세스는 커널이 제공하는 IPC 설비를 이용해서 프로세스 간 통신을 한다. IPC설비들 PIPE(익명 PIPE) 파이프로 두 개의 프로세스를 연결하고 하나의 프로세스는 데이터를 Write 다른 하나는 데이터를 Read만 한다. 한쪽 방향으로만 통신이 가능하기 때문에 Half-Duplex(반 이중 통신)이라고 부른다. 송/수신을 ..
[OS] 스케줄링 종류 목차 비선점 스케줄링 FCFS SJF HRN 우선순위 선점 스케줄링 SRTF 선점 우선순위 스케줄링 라운드로빈 스케줄링 비선점스케줄링 이미 할당된 CPU를 다른 프로세스가 강제로 뺏을 수 없는 정책 프로세스가 자원 할당 받으면, 스스로 반납할 때 까지 사용을 허용한다. 특징 일괄 처리 방식의 스케줄링 응답 시간 예측이 용이 공정한 자원의 할당 단점 중요한 작업을 먼저 수행할 수 없다. FCFS (선입 선처리 스케줄링) First Come First Service 큐에 도착한 순서에 따라 CPU를 할당한다. 호위 효과(convoy effect): 모든 다른 프로세스들이 하나의 긴 프로세스가 CPU를 양도하기를 기다리는 것 SJF (최단 작업 우선 스케줄링) Shortest Job First 버스트 시간( ..
[OS] 스케줄러 스케줄링 운영체제에서 프로세서(CPU)를 프로그램에게 할당하는 과정 시스템에 여러 개의 실행 가능한 프로세스들이 존재하고, OS는 이런 프로세스 중 하나를 선택해 CPU를 할당한다. 실행 준비 완료 된 프로세스들은 준비 큐에 들어가서 CPU를 할당 받을 때까지 대기한다. 실행 중인 프로세스가 인터럽트를 받았을 경우? 다시 준비 큐에 들어가게 되고, 이후에 다시 실행된다. 이 과정에서 프로세스들은 상태를 변화시키면서 큐 사이를 왔다갔다하는데, OS는 적절한 스케줄링을 통해 큐에서 작업들을 관리해야 한다. 이 작업을 하는 것이 스케줄러 장기 스케줄러 / 단기 스케줄러 - 일괄 처리 시스템 장기 스케줄러 디스크 내의 작업들을 어떤 순서로 메모리에 적재할지 결정한다. 디스크와 같은 저장장치에 작업들을 저장해 놓..
[OS] 멀티 스레드 멀티 스레드 하나의 프로세스 내에서 여러 개의 스레드를 이용하여 동시에 처리한다. (병렬 처리) 다수의 스레드는 하나의 데이터 자원을 공유하기 때문에 메모리 효율성이 높다. Q. 멀티 프로세스 대신에 멀티 스레드를 사용하는 이유? 자원의 효율성 증대 프로세스 간의 문맥 교환은 CPU 레지스터 교체, RAM과 CPU 사이의 캐시 메모리 초기화까지 진행된다. 따라서 자원을 공유하는 멀티 스레드는 처리 비용의 감소와 응답 시간이 단축된다. 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어든다. (오버헤드 감소) 단점 프로세스 외부에서 스레드 제어가 어렵다. 동기화 문제 하나의 스레드에서 문제가 발생하면 프로세스 전체에 영향을 준다. 스레드 풀 (Thread Pool) 프로세스를 시작할 때 일정한 수의 스레..
[OS] 프로세스와 스레드 쓰레드란? 프로세스 실행 단위 하나의 프로세스는 여러 개의 쓰레드로 구성 되어있다. 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다. 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며, 실행 상태가 변할 때마다 쓰레드 문맥 교환(context switching)을 수행한다. 각 쓰레드는 자신만의 스택과 레지스터를 가진다. 한 순간에는 하나의 스레드만 실행이 가능하다. (독립적인 수행 단위) 쓰레드의 장점 쓰레드는 프로세스보다 생성 및 종료 시간, 문맥교환 시간이 짧다. 쓰레드는 프로세스의 메모리, 자원 등을 공유하므로, 커널의 도움 없이 상호간의 통신이 가능하다. 쓰레드 동기화 방법의 종류 Mutex Semaphore Monitor 뮤텍스 (Mutex) 쓰레..
[SWEA] 1249. 보급로 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 * 다익스트라 알고리즘으로 최단 경로를 구한다. * 이 문제의 경우 "최단 경로"가 답이 되는 TC도 있지만, 조금 돌아가더라도 "복구 시간"이 가장 짧은 것을 정답으로 한다. * 그렇기 때문에 방문 표시를 단순히 좌표로 하면 안된다. (조금 돌아갔을 때 복구 시간이 더 짧을 수도 있는데, 이미 방문 표시가 되어있어서 못 가는 경우가 있다) * 방문을 표시하는 visited 는 3차원으로 설정..