본문 바로가기

컴퓨터 COMPUTER/Linux 리눅스14

SSH 서버 (Ubuntu 22.04.2) 에 Jupyter Notebook 원격으로 열기 SSH 서버 (Ubuntu 22.04.2) 에 Jupyter Notebook 원격으로 열기 리눅스 카테고리에 글을 다시 올리는 날이 오다니. 4년 만이다!!!!! 요즘 연구실에 성능이 아주아주 빵빵한 비싼 데탑을 새로 들였다. 협력하는 다른 사람들이 꼭 리눅스로 깔아줬으면 좋겟다고 해서 오랜만에 리눅스를 다시 쓰기 시작했다 ㅎㅎ.. 리눅스 왤케 좋아하는겨 VSCode를 연결해서 쓸 수는 있지만 개인적으로 jupyter notebook을 자주 쓰기도 하고 파일 다운로드/업로드가 편할 것 같아서 jupyter 를 연결하기로 결정. 생각보다 너무 쉽지만 머리에 외우고 다닐 캐파가 없으므로 기록하자면 단 쓰리스텝으로 원격 개발이 가능하다. 1. 터미널에서 SSH로 일단 서버 연결하기 ssh @ 2. 터미널에서 .. 2023. 6. 25.
14. [Deadlock Problem] : Deadlock 문제는 언제 발생하는가 Deadlock은 흔히 차선이 하나뿐인 도로 위에 마주보고 오도가도 못하는 자동차들에 비유를 한다. 1차선 도로에 두 자동차가 마주보고 서있다면, 두 자동차 중 하나는 차를 뒤로 빼주어야 한다. 이를 프로세스에 비유하자면, deadklock 문제가 발생하였을 때 프로세스들은 자원을 preempt 하고, rollback 해야 한다. Deadlock 문제는 특정 자원(resource)을 잡고 있으면서, 동시에 다른 특정 자원을 사용하기 위해 기다리는 blocked process 들에 의해 발생한다. 문제를 접근할 때 두가지만 기억하면 된다. 자원을 잡고 있는 (Holding), 자원을 기다리는 (Waiting). 모든 프로세스는 자원을 request 하여 --> hold 하여 사용하고 --> 사용을 다 하면.. 2019. 5. 11.
12. [Processor Scheduling(1)] : Scheduling 의 기본 개념 운영체제 공부에서의 스케줄링은, Request 들이 Server 의 처리를 기다리며 Queue 를 이루는 'Queueing model' 이 기본이 된다. 아래 그림을 보자. Request 는 파란색 큐에서 wait 하고 있고, Server 는 active 하게 그것들을 처리한다. 여기서 Server 의 종류를 두가지로 나눌 수 있다. nonpreemptible, preemptible server. preemptible을 직역하면 선점하는. 뭐 이런 뜻이다. 1. Nonpreemptible Server : 대표적으로 프린터의 예시를 기억하면 쉽다. 프린터는 A 라는 문서를 뽑는중에 B 라는 문서를 갑자기 뽑아내지 않는다. 아무리 B 를 뽑는게 더 급하더라도 말이다. 무조건 먼저 하던 작업을 끝내고, 순서대.. 2019. 4. 14.
11. [Multithreading(2)] : Thread 의 적용, User-level Threading 과 Kernel-level Threading Thread 를 적용하는 방법에는 두가지가 있다. OS 즉 커널 레벨 쓰레드가 쓰레드를 관리하는 것과 user 레벨(프로세스 내)에서 쓰레드를 관리하는 방법이다. user 레벨에서도 쓰레드의 적용이 가능한 이유는, 한 프로세스 내의 쓰레드들은 같은 메모리 공간을 공유하며, 오직 SP, PC, 레지스터와 같은 부분만 차이나기 때문이다. ​User-level Threading : 커널은 쓰레드의 존재를 알지 못한다. 프로세스 내의 Thread library 가 쓰레드에 관한 매니징을 모두 담당한다. 쓰레드의 관리에 있어서 커널이 아예 관여하지 않기 때문에 모드 스위칭이 적게 일어나 굉장히 가볍게 쓰레딩을 할 수 있다. 하지만 이러한 경우, 하나의 쓰레드만 작동을 멈춰도 그 프로세스 자체가 block 되며, .. 2019. 2. 6.
10. [Multithreading(1)] : 스레드의 등장 지난 정리까지 프로세스의 구조에 대해 상세하게 알아보았다. 프로세스는 크게 Image 와 Process context 로 나뉘었으며, ① Image 안에는 stack, heap, data, code 가 있었고 ② Process context 안에는 프로그램이 현재 어디까지 돌렸는지 가리키는 Program context 와 Kernel의 정보를 담는 Kernel context 가 있었다. 아래 그림을 참고해서 기억을 더듬어보자. Multiprocessor 의 등장으로 Multiprocessing이 가능해졌지만, 전통적인 프로세스 구조로는 한 프로세스가 오직 한 프로세서만 이용할 수 있기 때문에 Multiprocessing의 이점을 가져올 수 없었다. 새로운 프로세스를 생성하기 위해서는 커다란 자료구조를 복.. 2019. 2. 6.
9. [Process Communication] : 프로세스들은 어떻게 소통할까 하나의 프로세스 당 하나의 프로세스만 돌아가도 된다면 참 행복하겠지만, 사용자는 한번에 여러가지 일을 수행하고 싶어하기 마련이다. 이에 따라 프로세스 간의 충돌을 최소화하고 멀티 프로세싱에서의 효율을 높이는 것이 OS 의 고질적인 과제가 되었다. 프로세스 간의 소통에는 다음과 같이 2가지가 메인 목표이다.① Communication : data exchange - 같은 메모리 안에 있는 자료를 서로 다른 두가지 이상의 프로세스가 사용할 때 어떻게 자료를 관리할 것인가② Synchronization : 프로세스 간의 순서 매기기, 동기화 하기 2가지를 만족시키기 위해서 Application Programming (shared memory) 혹은 IPC (interprocess communication) 을.. 2019. 1. 31.