아무것도 몰라요

리눅스 13

Intel(R) Optane (TM) DC Persistent Memory - APP DIRECT 로 설정하기

0. 도입 Intel Optane DC Persisten Memory(Optane DCPM)은 SCM(Storage Class Memory)의 일종으로 DRAM과 같은 random access와 low latency를 제공하면서 non-volatile 한 특징을 가지고 있다. 지난 몇십 년간 이러한 메모리에 대한 활발한 연구가 진행되어 왔으며, PCM, STT-RAM과 같은 기술들이 등장하였다. 하지만 그중 가장 먼저 일반인(?)에게 상업적으로 제공된 제품이 바로 Intel Optane DC PM이다. 이 메모리는 PCIe로 연결되지 않고 DRAM과 마찬가지로 DIMM slot에 꽂혀 iMC를 통해 접근이 가능하다. 자세한 기술적 특징은 생략하고, 간단하게 말하면 Optane DC PM은 빠르고, 비휘발..

리눅스 2022.03.04

socks5를 사용하여 IDRAC 접속하기

그냥 chrome에 IDRAC Server address를 입력하면, root server를 통과하지 않았기 때문에 당연히 접속이 안된다. 따라서 기존에 IPMI에서 2번의 ssh를 사용했던 것처럼 IDRAC도 같은 과정을 거쳐야된다. 사실 같은 방법으로 IPMI도 chrome으로 접속이 가능할 것 같다. [IP ADDR 1] -> IP address of root server [IP ADDR 2] -> IDRAC Server Address 1. ssh -D localhost:9090 [user]@[IP ADDR 1] '-D'옵션은 뒤에 [bind_address]의 값과 같이 입력이 된다. 이는 특정 동적 로컬 주소를 포트 포워딩 해주는 역할을 한다. 이 때 port forwarding은 applicat..

리눅스 2022.01.18

Linux 사용자(user) 추가하기

오늘은 linux에 새로운 user를 생성하고 sudo권한까지 부여해보는 실습을 해볼 것이다. 매우 간단하며 한번 제대로 알아두면 까먹기 어렵다. 자세한 내용은 이미 설명되어 있는 홈페이지가 많기 때문에 설명은 생략한다. 대표적으로 나는 밑에 사이트를 보고 따라 했다. https://linuxize.com/post/how-to-create-users-in-linux-using-the-useradd-command/ sudo useradd -m khj 위의 명령어를 통해 khj라는 user를 생성할 수 있다. '-m'은 khj라는 유저를 위한 home directory를 생성해준다는 의미이다. 대부분의 경우에 이 옵션을 붙여 사용한다고 알고 있다. sudo passwd khj 위의 명령어를 통해 khj라는 ..

리눅스 2021.11.26

IPMI ssh로 접속하기

1. IPMI란? IPMI(Intelligent Platform Management Interface)는 host 시스템의 CPU, firmware, OS와 별도로 하드웨어를 원격으로 관리하는 데 사용되는 인터페이스 집합이다. OS를 거치지 않고 직접 hardware에게 원격으로 신호를 보내 파워를 조절하거나 다양한 작업을 할 수 있다. 즉, IPMI를 사용하기 위해서는 서버를 켤 필요가 없다. IPMI와 연관된 하드웨어를 BMC(Baseboard Management Controller)이라고 한다. 주요 기능은 서버의 전원 제어, 하드웨어 모니터링, logging 등이 있다. 2. IPMI 사용해보기 IPMI에 접속하기 위해서는 특정 IP주소가 필요하다. 이를 http protocol을 사용하여 접속하..

리눅스 2021.09.23

Timer Management

0. 도입 컴퓨터는 시간을 어떻게 측정하는 것일까? 컴퓨터에서 Timer는 매우 중요한 역할을 한다. 단순히 알람, 컴퓨터 꺼짐 예약뿐만 아니라 각 process에 할당된 time slice를 정해주고 preemption 시켜주는 역할도 timer가 한다. 이번에는 실제 system의 timer hardware를 사용하여 다양한 timer interrupt와 이에 필요로 하는 구조체, 변수들을 알아보자. 1. Timer Interrupt timer interrup는 시스템의 timing hardware에 의해서 주기적으로 발생한다. 하긴, 컴퓨터에 수천개의 process, context가 존재하는데 매 순간순간마다 어딘가에서 변수를 증가시키는 형태로 하는 것은 불가능할 것이다. Interrupt를 걸어서..

리눅스 2021.06.08

Kernel Memory Allocation

0. 도입 프로그램이 실행이 되면 프로세스가 되어 메모리에 올라간다. 메모리 상의 일정 영역을 code, data, stack, heap으로 나누어 프로세스가 실행하는데 필요한 행동을 하게 된다. 이 중 code영역은 실제 코드가 올라가는 영역이고 data영역은 전역 변수들이 들어간다. stack에는 단순 변수, 함수의 return address 등이 들어가고 heap은 malloc과 같은 동적 할당을 하여 접근할 수 있게 된다. 현재 존재하는 거의 모든 컴퓨터는 가상 메모리를 사용하고 있기 때문에, 이러한 process의 memory space가 항상 실제 메모리 위에 올라가 있지는 않다. 여기서 궁금증이 생긴다. virtual memory를 사용하는 컴퓨터는 모든 process의 page가 swap의..

리눅스 2021.06.08

Device Control Method

Key words - Memory Mapped I/O - Port Mapped I/O (I/O Mapped I/O) - Device Driver - mmap() 0. 도입 대부분의 Embedded System은(꼭 Embedded system이 아니더라도) 많은 peripheral device을 동반한다. 그렇다면 그 주변 기기들과는 어떤 방식으로 소통을 할까? Computer Architecture시간에 자세하게 다루었지만 자세한 내용은 까먹었다. 핵심은 Hardware 내부에 Device Controller가 있으며, 해당 Device Controller내부의 register 혹은 memory를 제어하여, device가 interrupt를 혹은 polling을 하여 저장된 내용을 읽고 쓰면서 CPU와..

리눅스 2021.04.21

Cross Development Environment(교차 개발 환경)

Key Words - Cross-Compiler - TFTP 1. Cross Development Environment 백준 문제를 풀다 보면 제대로 코드를 작성했는지 돌려보는 환경이 필요하다. C/C++를 사용하였다면 visual studio, xCode 등일 수 있고 Java라면 Eclipse, Intellij가 될 수 있다. 이러한 프로그램들을 'IDE'라고 한다. IDE, Integrated Development Environment, 는 source code editor 뿐만 아니라 debugger, automation tool 등 코딩하기 더 좋은 환경을 제공하는 소프트웨어를 말한다. 이와는 약간 다른 단순히 코드 편집 기능만을 제공하는 visual stuido code, notepad도 있다..

리눅스 2021.03.12

[linux kernel] CFS Scheduler에서 VR(T) 조정(fork)

1. 도입 지난 글에서 Block 되어있던 Task가 새로운 run-queue로 들어오면서 virtual runtime이 어떻게 조정되는지에 대해서 살펴보았다. process state diagram을 살펴보면 다음과 같이 'ready'상태 즉 run queue로 들어오는 경우는 wake_up 말고도 'admitted'인 경우도 있다. 즉, 새로운 process가 생성되는 경우, unix, linux등에서 "Fork" system call이 발생하였을 때 새로운 process(task)의 vruntime은 어떻게 설정될까? 아마 wake_up과 비슷하게 진행되지 않을까 예상되지만 일단 한번 살펴보자. 2. Fork시 code flow따라가기 (1) _do_fork fork가 발생하면서 _do_fork라는..

리눅스 2021.02.21