전체 글 213

리눅스 study

운영체제란? 운영체제 개념 운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 괸라히며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다. 운영체제 구조 -> 운영체제는 커널과 인터페이스로 이루어져 있다. 커널 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로 운영체제의 성능을 좌우합니다. (자동차의 엔진에 해당한다. 인터페이스 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 합니다. 리눅스 리눅스의 ..

42Seoul/Born2beroot 2023.05.07

가상 머신 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