전체 글 212

가상 머신 study

가상머신 가상 머신 개념 실재하는 컴퓨터 상에 소프트웨어로 논리적으로 만들어낸 컴퓨터 하나의 물리 자원(컴퓨터) 위에 하나의 환경(OS)만 있는 것을 효율화하고자 가상화층을 만들고 그 위에 OS를 새로 설치하는 기법 왜 가상 머신을 만들었을까? 실제로 있는 컴퓨터 시스템을 여러 명의 사용자가 동시에 사용할 수 있게 하기 위해서 즉 효율성을 높인다. 하나의 컴퓨터를 여러 명의 사용자가 동시에 사용할 수 있도록 여러 대의 작은 컴퓨터로 분할 사용하거나, 운영 체제나 하드웨어 등의 구성을 달리하여 운영하고자 할 때 주로 사용된다. 장단점 사용자는 자신만이 콘솔, 디스크, 프린터 등을 갖춘 온전한 컴퓨터 시스템을 갖고 혼자서 사용하고 있는 것처럼 느끼게 된다. 1대의 컴퓨터상에서 여러 개의 시스템을 동작시키는 ..

42Seoul/Born2beroot 2023.05.07

4. 정적 변수(static)

정적 변수는 2가지가 있다 외부정적변수 내부정적변수 static변수는 프로그램이 시작 될 때 할당이 되고 프로그램이 끝날 때 없어짐. 초기화가 안 되어 있으면 0으로 초기화 해주게된다. 외부 정적 변수 외부 정적 변수 초기화 #include static int count; int main() { printf("%d", count); } static변수는 프로그램이 시작 될 때 할당이 되고 프로그램이 끝날 때 없어짐. 함수가 끝날 때 파괴되는 변수가 아니기에 함수가 끝나도 그 값을 기억하고 있을 수 있다. 전역으로 선언한 static 변수는 그 소스파일 내의 모든 함수에서 사용이 가능하다. 다른 소스 파일에서 사용하지 못함. 정보은닉(정보를 숨긴다) 효과가 있음. 결론 외부 정적 변수는 전역 변수라고 생각..

3. 파일 디스크립트 함수(open, read, close)

get_next_line 과제에서는 open, read, close에서 read만 허용을 하는 과제입니다. read만 공부하고는 과제에 임하기 어렵다. open, read, close를 전부 알아야한다. open 참고 사이트 헤더: fcntl.h 형태: int open (const char *FILENAME, int FLAGS[, mode_t MODE]) 인수 char *FILENAME 대상 파일 이름 int FLAGS 파일에 대한 열기 옵션 [, mode_t MODE] O_CREAT 옵션 사용에 의해 파일이 생성될 때 지정되는 파일 접근 권한 반환 int 0 < 파일 열기에 성공하면 파일 디스크립터의 양의 정수 값 반환 -1 == 실패 파일을 open할 때는 용도에 따라 읽기 전용, 쓰기 전용 또는 읽..

2. OPEN_MAX, 연결리스트 vs 배열

OPEN_MAX 파일 디스크립터는 최대값이 있다. 일반적으로 파일 디스크립터 값은 0 ~ OPEN_MAX 까지 둘 수 있으며, OPEN_MAX라는 매크로 값은 코드가 실행되는 환경 (플랫폼)에 따라 다르다. 이는 limits.h에서 확인 가능하다. 만일 윈도우 환경이라면 stdio.h의 FOPEN_MAX에서 확인할 수 있다. 우리가 bonus를 풀기 위해 컴퓨터에서 최대한 파일을 몇 개 열 수 있는 지를 알아야 OPEN_MAX 값을 알 수가 있다. 그 방법으로는 ulimit 명령어를 사용하면 된다. ulimit는 무엇인가? ulimit은 프로세스의 자원 한도를 설정하는 명령어 ulimit [옵션] 값 ( Centos , RHEL 기준) a : 모든 제한 사항을 보여줌. c : 최대 코어 파일 사이즈 d ..

1. 파일 디스크립터(file Descriptors)

파일 디스크립터(FD, File Descriptor) Unix OS에서 네트워크 소켓과 같은 파일이나 기타 입력/출력 리소스에 액세스 하는 데 사용되는 추상 표현이다. 즉, 시스템으로 부터 할당받은 파일이나 소켓을 대표하는 정수다. 파일을 대표하기 위해 시스템으로부터 할당 받은 음수가 아닌 0과 양수인 정수 값(Non-negative Integer) 프로세스에서 열린 파일의 목록을 관리하는 테이블의 인덱스 유닉스 시스템에서 모든 것이 파일이다. • 정규 파일(Regularfile), 디렉토리(Directory), 소켓(Socket), 파이프(PIPE), 블록 디바이스(Block Device), 캐릭터 디바이스(Character Device) 등등 모든 객체들을 파일로써 관리된다 • 유닉스 시스템에서 프로..

libft Bonus - lstdelone, lstclear, lstiter, lstmap

lstdelone voidft_lstdelone(t_list *lst, void (*del)(void *)) 현재 가리키고 있는 노드를 삭제 시킴. free lst와 free content #include "libft.h" voidft_lstdelone(t_list *lst, void (*del)(void *)) { if (lst == NULL || del == NULL) return ; del(lst -> content); free(lst); } 참고 사이트 ft_lstdelone 구현 ft_lstdelone 구현 lst가 NULL이면 리스트가 비어 있다는 뜻. 이 때에는 삭제할 리스트가 없는 것이므로 return; del()함수가 NULL이면 lst의 content를 free하는 기능을 수행하지 못하..

42Seoul/libft 2023.03.24

libft Bonus - lstnew, lstadd_front, lstsize

lstnew 새로운 노드를 생성하는 함수 #include "libft.h" t_list*ft_lstnew(void *content) { t_list*result; result = (t_list *)malloc(sizeof(t_list)); if (result) { result->content = content; result->next = NULL; } return (result); } 참고 사이트 lst함수들에 대해서(lstnew, lstadd_front, lstadd_back, lst_size) lst함수들에 대해서(lstnew, lstadd_front, lstadd_back, lst_size) 틀린 내용이 있다면 댓글로 알려주세요! 감사합니다 :) 💡 lstnew 에 대하여 struct s_list ..

42Seoul/libft 2023.03.24

libft Bonus - Makefile

Bonus 파트를 구현하기 위해서는 makefile에 bonus를 추가해주어야 한다. 그런데 리링크 방지를 하기위한 코드를 짜야하는데 그 방법이 무엇일까? WITH_BONUS라는 것을 하나 만들어서 수행을 할 때 어떤 파일을 들고 올 것인지에 대해 넣어준다. ifdef, endif를 넣어주어서 makefile을 만들게 되면 리링크 방지를 할 수 있다. 왜? OBJ에서 필요한 파일들 즉, OBJS와 OBJS_BONUS가 바뀐 부분이 있는지 체크를 한 후 바뀐 게 없으면 리링크가 되지 않는다. CC = gcc CFLAGS = -Wall -Wextra -Werror NAME = libft.a # SRCS = $(wildcard *.c) SRCS = ft_isalpha.c ft_isdigit.c ft_isaln..

42Seoul/libft 2023.03.24