본문 바로가기

42seoul46

[ born2beroot ] 1. 가상머신 (Virtual Box) 가상머신이란? : 하드웨어를 소프트웨어적으로 구현하여 그 위에서 운영체제가 작동하도록 하는 기술 >> 하드웨어의 일부분(하드디스크, 램, cpu 등의 자원)을 가져다가 다른 운영체제에서 사용할 수있도록 하는 프로그램. 마치 본 컴퓨터와는 다른 부분인것마냥 인식하게 한다. ** 하이퍼바이저 : 가상 머신(VM)을 생성하고 실행하는 프로세스 (가상 머신 모니터) 하이퍼바이저는 할당되었던 리소스를 각 가상 머신에 제공하고, 물리 리소스에 대해 VM 리소스의 일정을 관리. 서로 다른 여러 개의 운영 체제를 나란히 구동할 수 있으며, 하이퍼바이저를 사용해 동일한 가상화 하드웨어 리소스를 공유 **Virtual Box는 시스템 가상머신으로 완전한 플랫폼을 제공하고, 완전한 운영체제의 실행을 지원한다. type1 같.. 2022. 2. 4.
[ born2beroot ] 0. 과제 이해하기 Borntoberoot - 직접 서버를 만드는 과제 - 관리 시스템을 위해서 centOS나 Debian을 골라야합니다. 당신이 시스템 관리에 처음이라면 데비안이 더 추천됩니다. - 저장소의 루트에있는 signature.txt 파일 만 제출하면 된다. 시스템 가상 디스크의 서명을 붙여 넣어야한다. [Mandatory part] - 이 프로젝트는 규칙에 따라 첫번째 서버를 설정하는 것으로 구성된다. - 버추얼박스를 이용해서 직접 최소한의 서비스를 제공하는 서버를 만드세용. 따라서 그래픽적인 요소는 들어가지 않습니다. 즉, xorg나 다른 그래픽 서버 장치(X.org ... 등등)를 사용하면 빵점입니다. # x.org : 윈도우 운영체제와 같이 리눅스(유닉스 계열 운영체제)에서 그래픽 환경을 제공해주는 시스템.. 2022. 2. 4.
[ft_printf] 2. 가변인자 (variadic arguments) # 가변인자 (variadic arguments) : 매번 함수에 들어가는 인수의 개수가 변하는 것 - 최소 한 개의 정해진 자료형의 매개변수가 필요하다. (변수값을 넣을 문자열) va_list : 가변 인자 목록 #include va_list ap; - 가변 인자의 메모리 주소를 저장하는 포인터 va_start : 가변 인자를 가져올 수 있도록 포인터를 설정 #include void va_start(va_list ap, last); - ap의 시작 위치를 함수에 주어진 마지막 고정 인자(last) 다음으로 초기화 - 가변 인자에 접근하기 전에 va_start를 호출해야한다. (일반적으로 함수 시작부분에 호출) va_end : 가변 인자 처리가 끝났을 때 포인터를 NULL로 초기화 #include voi.. 2022. 1. 16.
[ ft_printf ] 3. printf의 버퍼 관리 방법 (표준 입출력과 버퍼 | 스트림과 데이터 이동) # 입력과 출력 + 입력 : 프로그램 안으로 데이터가 들어오는 것 ex) 키보드, 파일, 마우스 ... + 출력 : 프로그램 밖으로 데이터가 나가는 것 ex) 모니터, 파일, 프린터 ... # 스트림 + 스트림(stream) : 한 방향으로 흐르는 데이터의 흐름 - 한 방향으로만 데이터의 전송이 이뤄진다. - 프로그램에서 데이터를 입출력하기 위해 입력장치, 출력장치를 프로그램과 연결시켜 주는 다리 역할을 하는 매개체 - 운영체제에서 제공하는 소프트웨어로 구현된 가상의 다리 - 외부장치와 프로그램 사이의 데이터 송수신 도구 + 스트림의 생성과 소멸 키보드와 모니터등등의(콘솔) 연결을 위한 스트림의 생성은 자동으로 생성된다. 즉, 콘솔 입출력을 위한 입-출력 스트림은 프로그램 실행시 자동으로 생성되고, 종료.. 2022. 1. 15.
[ ft_printf ] 1. printf # printf - C언어의 표준 출력 함수 - 여러 종류의 데이터를 각 서식에 맞게 출력할 수 있다. - 원형 # include int printf(const char *format, ...); > format에 쓰여진 데이터를 ...(서식지정자)의 형식으로 출력한다. - 서식 지정자 (format specifier) : 서식 지정자를 통해 printf()로 출력할 데이터의 서식을 지정할 수 있다. 서식 지정자 출력 데이터 서식 지정자 출력 데이터 %c 하나의 character %x 부호 없는 16진 정수 (소문자) %s 문자열 %X 부호 없는 16진 정수 (대문자) %d 부호 있는 10진 정수 %% 퍼센트(%) 기호 %i 부호 있는 10진 정수 %e 실수 (e-표기법) %u 부호 없는 10진 정수 %.. 2021. 12. 29.
[ printf ] 0. 문제 이해하기 - libc의 printf 직접 구현하기 - 성공적인 ft_printf는 체계적이고 확장성있는 코드입니다. - 사용 가능한 외부 함수 malloc : void *malloc(size_t size); : size 바이트의 메모리를 힙에서 할당하여 반환 free : void free(void *ptr); : ptr이 가르키는 메모리를 해제 write : size_t write(int fd, const void *buf, size_t n); : open()함수로 연 파일에 쓸 수 있게 함 va_start : ** va_arg : ** va_copy : ** va_end : ** ** 가변인자(variadic arguments)를 사용하는 방법을 배워봅시다. > 가변인자 : 매번 함수에 들어가는 인수의 개수가 .. 2021. 12. 23.
[ GNL ] 04. 선행지식_read() 함수 # read() ssize_t read (int fd, void *buf, size_t len) read() 시스템 콜은 파일의 끝(EOF)를 알려주기 위해 0을 반환합니다. 파일에 읽은 바이트가 더 이상 없을 경우에 해당하며 에러로 처리되지는 않습니다. 다만, 파일을 읽을 데이터가 더 이상 없을 뿐임을 알려주는 것 # 시스템 콜 + 운영체제는 커널 모드(Kernel Mode)와 사용자 모드(User Mode)로 나뉘어 구동 + 운영체제에서 프로그램이 구동되는데 있어 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력하는 등 많은 부분이 커널 모드를 사용한다. 시스템 콜은 이러한 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수.. 2021. 11. 3.
[ GNL ] 03. 선행지식_정적변수(Static) # 정적변수 (static) + 변수 자료형 앞에 static을 붙여서 선언한다. + 중괄호 내부에서 읽힐때 메모리 생성되고 프로그램이 종료되면 메모리 소멸한다. + 전역변수처럼 프로그램이 종료되기전까지 메모리가 소멸되지 않으며, 특별히 초기값을 지정하지 않아도 0으로 자동 초기화된다. + 상수로만 초기화할 수 있다. + 함수가 끝나도 값을 유지할 수 있다. + 하지만 다른 함수에서 해당 변수의 값에 접근할 수 없다. + stack이 아닌 데이터 부분에 메모리가 할당된다. # 지역변수 + 중괄호 내부, 함수의 매개변수에서 사용되는 변수 + 중괄호 밖, 함수의 외부에서는 무효화된다. + 변수의 이름이 같아도 다른 함수에 존재하고 있으면 다른 변수이다. + 다른 함수의 지역 변수에 접근할 수 없다. + 초가.. 2021. 11. 3.
[ GNL ] 02. 선행지식_파일 디스크립터 # 파일 디스크립터 (fd, file descriptor) + Unix OS 계열의 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념. + 특정 파일에 접근할 때 사용하는 추상적인 값 + 파일 디스크립터는 일반적으로 0이 아닌 정수값을 가진다. + 유닉스 시스템에서는 정규파일, 디렉토리, 소켓, 파이프, 블록 디바이스, 캐릭터 디바이스 등 모든 객체를 파일로 관리한다. 프로세스가 실행 중에 파일을 open하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당. 그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터(FD)값을 이용해서 파일을 지칭할 수 있다. + 프로세스에서 열린 파일의 목록을 관리하는 (FD)테이블의 인덱스 - FD테이블.. 2021. 10. 31.