본문 바로가기

리눅스3

1. Linux(리눅스) 이해 - 개요 해당 카테고리 포스팅은 기초적인 용어 정의와 내용도 복기하고 다루지만, 학부생수준의 OS 지식을 전제로 진행합니다. 들어가기 앞서, 컴퓨터 공학(이하 CS)에서 여러 용어들은 명확한 차이가 있으면서도 혼용되어 사용됩니다. 큰 틀에서는 무방한 경우가 다수입니다. 하지만 이는 이미 차이를 이해하고 있을 때 괜찮은 것이지 학습과 이해를 목표로한다면 용어의 이해가 먼저 선행되어야합니다. Program vs Software vs Application 일반적으로 3가지 용어는 평상시 혼용되어 사용하며 큰 문제 또한 없습니다. 하지만 OS의 구성들은 위 3가지를 항상 명확하게 구분지을 수 없는 경우가 다수 존재하며 같은 것을 보고도 관점에 따라 위 3가지중 어떤 것으로 정의할 것인지 달라질 수 있습니다. 그렇기 때문.. 2022. 7. 17.
2. Linux(리눅스) 이해 kernel vs OS(distribution), 커널 vs 운영체제 개요 Kernel과 OS(리눅스 배포판)의 차이를 아는 것은 앞으로 OS를 운영하는데 핵심적인 지식입니다. 흔히 OS에서 제공하는 기능과 종속적인 시스템들을 OS 수준인지 커널 수준인지 혼동하는 경우가 많습니다. 이는 애플리케이션을 운영하는데 있어서도 고수준으로 갈수록 중요한 문제입니다. 커널이란? 커널은 컴퓨팅 하드웨어 자원을 추상화하고 프래그램 수준에서 하드웨어 자원에 접근할수 있도록 인터페이스를 제공하고 하드웨어를 컨트롤하는 시스템 소프트웨어입니다. 커널과 OS의 차이를 알기위해서 소프트웨어, 프로그램등의 미묘한 차이를 구분할 수 있는 것이 중요합니다. 아래 포스팅을 먼저 읽는 것을 추천드립니다. https://asung123456.tistory.com/53 1. Linux(리눅스) 이해 - 개요 .. 2022. 7. 16.
Linux C/C++ shared library 컴파일하기 fPIC 옵션 GOT, PLT c++ g++ -shared -fPIC -o g++ -shared fPIC -o lib.so code.cpp c gcc -shared [-fPIC] -o gcc -shared [-fPIC] -o lib.so code.c -fPIC 생략가능 하지만 공유라이브러리를 만들 때는 -fPIC 옵션 사용을 권장합니다. (컴파일 종류에 따라서 -fPIC는 필수 옵션입니다.) fPIC를 사용하지 않을경우 재배치 기법을 사용하게 되는데, 간략하게 라이브러리의 주소를 현재 사용하려는 프로세스 주소에서 접근가능하게 재배치 한다는 개녑입니다. 단점은 1. 여러 프로세스가 공유라이버리를 공유하게되면 각 프로세스가 로드 할때마다 공유라이브러리의 text section(프로세스의 코드가 있는 영역)가 변해야하는데 이는 불가능하다... 2020. 2. 6.