본문 바로가기

컴퓨터 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.
8. [Execution of the Operating System] : OS 가 움직이는 방법 OS 가 어떻게 생겨먹었는지, 어떻게 움직이는지를 알아보자. 좀 추상적이긴 하지만 OS 설계에 대한 3가지 대표적인 접근법이 있다. ​① Execution within User Processes: 유저프로세스의 일부로 kernel 이 위치하고 있다는 접근. OS가 Program Image와 직접적으로 연결되어 있다는 접근법이다. 이 설계방법에서는 각 프로세스에서 인터럽트, 시스템 콜 같은게 일어났을 때 process switching 을 완전히 안해도 mode switch만으로 기능을 수행할 수 있다는 장점이 있다. 위 그림처럼, 프로세스의 일부처럼 OS 가 붙어있고 오직 프로세스 스위칭을 할 때에만 큰 오버헤드를 가지게 된다. 하지만 가용한 유저메모리가 줄어든다는 단점이 있다. 지금 공부하고 있는 리눅.. 2019. 1. 30.
7. [Process Switching] : 프로세스 스위칭, 프로세스 순서매기기 프로세스 스위칭에 다가가기 앞서, Dual mode operation 을 복습해보자.User mode 는 유저 프로그램이 실행되는 모드였고, Kernel mode 는 조금 더 높은 권한을 가지는, 프로세서의 기능을 완전히 제어할 수 있는 모드였다. (참고로 Kernel은 영어로 알맹이, 핵심 뭐 이런 뜻이다.) - 정말 간단한 복습 끝​두가지 모드를 복습한 이유는.. mode switching 없이는 process switching 이 일어나지 않기 때문이다. mode switching은 말그대로 mode 가 바뀔때마다 일어난다. User mode 에서는 ① external interrupt (timer, I/O interrupt 와 같이 진행 중인 프로세스와 관계없는), ② Internal Trap (.. 2019. 1. 30.
6. [Process State, Scheduling] : 프로세스의 상태와 스케쥴링 프로세스는 항상 5가지의 상태 중에 하나를 가지게 된다. 아래 발그림 + 설명을 통해 자세히 알아보자. ① 프로세스가 막 생성되었을 때 New 라는 상태를 가진다. ② 생성 후에 Admit 되면 Ready 상태로 넘어간다. Ready 상태에 있다는 것은 프로세서가 그 프로세스를 맡게 되기 까지 대기하는 것이며, 'ready queue' 에 서 기다리는 상태이다. ③ 대기 중인 프로세스가 순서가 되면 프로세서에 의해 그 프로세스의 instruction 이 실행된다. 이 과정을 Dispatch 라고 하며 이 때 프로세스의 상태를 'Running' 이라고 한다. 실행 중이던 프로세스가 프로세서에 할당된 시간을 다 썼다면 'Timeout' 상태가 되어 다시 Ready queue 로 돌아간다. ④ 실행 중이던 프.. 2019. 1. 30.
5. [Processes] : 프로세스란 무엇인가 컴공이라면 이미 여러번 마주쳤을 두 단어가 있다. 프로세스와 프로그램. 간단히 이 두 개념을 구분하자면, 어떠한 코드가 컴파일되면 프로그램이 되고, 프로그램을 실행하면 그것이 프로세스가 된다. 프로그램은 코드의 집합체라고 생각하면 간단한데, 이걸 RAM 에 올려 CPU 가 그걸 돌릴 때 프로세스라고 한다. 따라서, 운영체제에서는 프로세스를 다음과 같이 정의한다. process : an instance of a running program. (a program in execution)돌아가고 있는 프로그램의 객체라고 말한다.그렇다면 프로세스는 무엇으로 이루어져 있을까? 참고로 운영체제를 공부하기 위해 반드시 처음부터 프로세스의 구성을 제대로 알고 있어야 한다. ★매우 중요★​① Images 1) code .. 2019. 1. 29.
4. [Virtual Machine(VM)] : 가상머신이란 무엇인가 가상머신(VM) 이란 무엇이고, 왜 필요한 걸까?: 어플리케이션 프로그램은 특정 ISA + OS 에 맞춰서 설계된다. 예를 들어서 매킨토시 앱은 PowerPC + MacOS 위에서만 돌아갈 수 있고, 리눅스 앱은 x86+Linux 위에서만 돌아갈 수 있다. 가상머신은 이러한 어플리케이션을 돌리는 데 있어서 생기는 한계점을 없애기 위해 등장하였다. 가상머신은 하나의 기기로 다양한 컴퓨팅(특히 네트워크 관련)이 가능하도록 하며, single OS 보다 더 보안에 강하다.(Portability , Flexibility 를 높이는!)가상머신(VM)의 기본 원리와 종류: 가상머신은 실제 호스트에 어플리케이션을 얹기 위해서 한 레벨의 소프트웨어를 만든다. 가상머신의 종류에는 각 프로세스를 가상화하는 Process .. 2019. 1. 29.
3. [System Call Handling] : 운영체제는 어떻게 시스템콜을 핸들링하는가. + System call vs. API * 참고로 아래 설명은 모두 리눅스 운영체제 기반의 내용입니다.​SYSTEM CALL :이전 게시글에서 user mode 에서 kernel mode 로 가기 위해서 'system call' 이라는 것을 호출하면, system call handler 가 사용자가 원하는 행동을 할 수 있게끔 도와준다고 했다. System call은 돌아가는 프로그램과 운영체제 간에 인터페이스를 제공한다. 그럼 이 system call의 종류에는 무엇이 있을까?​시스템 콜은 기능에 따라 크게 세가지 - process management, file management, file system management - 로 나눌 수 있다.① Process management : fork, waitpid, execve, exit, ki.. 2019. 1. 29.
반응형