분류 전체보기
[Operating System] 프로세스
Process / Program 프로그램 disk에 위치한다. 프로세스 disk에 위치한 program file을 메모리에 올린 것이다. runnable program. 프로세스의 구성 프로세스는 기본적으로 메모리에 위치한다. Stack, Heap, Data, code 영역으로 구분된다. 0번지는 stack의 처음이며, 끝은 code의 끝이다. process 는 memory 외에도 register도 있다. program counter, stack pointer 등이 있다. pc는 다음 실행 명령어 가리키며 sp 는 stack내의 특정 공간 위치 저장해준다 프로세스 생성 fork와 같은 시스템콜을 사용해 프로세스를 생성한다. 프로세스 생성 = 프로그램을 메모리로 load 하는 작업 (프로세스의 주소공간으로..
[Operating System] 운영체제란?
운영체제란? 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고, 지원하는 SW 자원 관리자 HW 존재를 상세히 몰라도 SW적으로 사용가능하게한다. HW숨기기 위해 SW적으로 추상화한다. HW를 추상화 → HW를 클래스,구조체로 정의 CPU MEMORY DISK를 구조체로 Process, VirtualMemory, FileSystem으로 만든다. HW 자원을 적절히 관리하여 여러 프로그램이 동시에 실행될 수 있도록 하며, 프로그램끼리 상호작용할 수 있도록 한다. OS는 kernel 함수를 이용해 HW를 관리하며, 사용자는 kernel 함수를 직접 호출하지 않고, system call을 사용하게 된다. OS가 부팅될 때 메모리에 올라가 상주하는 소스코드 부분을 커널이라고 한다. 운영체제의 역할 메..
[우아한테크코스 5기] 프리코스 합격 그리고 최종 코딩테스트
11월 4주를 프리코스 과정을 통해 진행하고 3주만에 우아한테크코스 5기 합격 소식을 받았다. 설마설마 했는데 진짜 붙었다. 이번주 토요일 잠실에서 우아한테크코스5기 최종 코테를 보는데 꼭 붙었으면 좋겠다. 전날 아바타2 용아맥 보러가는데 .. 이럴줄 알았으면 예약 안했을텐데 ... 대학교 기말고사 기간이라 지금 웹프로그래밍,클라우드 수업 시험에 데이터베이스 과제까지 있어서 걱정이 이만저만이 아니다. 하지만 난 할 수 있다. 나는 합격한다. 12월 28일에 합격소식을 갖고 돌아온다.
C / LINUX 디몬 코딩 규칙 daemon
함수 기능 디몬 프로세스는 백그라운드에서 긴 시간 동작하는 프로세스이다. 디몬프로세스는 부팅시 실행되어 OS가 해야할 일들을 수행한다. 안정적인 디몬수행을위해 규칙에 맞추어 프로그램을 수행하여야한다. 함수 1. 백그라운드 수행이 되어야 한다. 2. 프로세스 그룹에서 탈퇴, 새로운 프로세스 그룹을 생성한다. 3. 터미널 입출력 시그널을 무시한다. 4. 파일 모드 생성 마스크를 해제한다. 5. 현재 디렉토리를 루트 디렉토리로 생성한다. 6. 오픈되는 모든 파일 디스크립터를 닫는다. 7. 표준 입출력과 표준 에러를 /dev/null로 재지정한다. 함수 예제 #include #include #include #include #include #include #include #include int ssu_daemon..
C / LINUX sigpending(2)
함수 기능 팬딩 중이거나, 블록되었을 때 발생한 시그널 집합을 가져오는 시스템호출 함수 함수 원형 #include int sigpending(sigset_t *set) 함수 파라메터 set 인자가 가리키는 곳에 호출한 프로세스에 시그널이 블록되어있으며 현재 팬딩 중인 시그널들의 집합을 저장한다. 함수 예제 #include #include #include #include int main(void) { sigset_t pendingset; sigset_t sig_set; int count = 0; //sig_set을 1로 초기화 sigfillset(&sig_set); //sig_set이 프로세스의 시그널 마스크가 됨 sigprocmask(SIG_SETMASK, &sig_set, NULL); while(1) ..
C / LINUX sigprocmask(2)
함수 기능 현재의 시그널 마스크를 검사하거나 변경하는 시스템 호출 함수이다. 일반적으로 sigprocmask는 시그널을 블록시키고 특정작업의 실행을 마치고나면 블록을 해제하는데 사용된다. 함수 원형 #include int sigprocmask(int how, const sigset_t *set, sigset_t *oldset); 함수 파라메터 how 시그널 마스크의 구체적인 변경 방법을 정의하는 상수 값 set 마스크하거나 마스크를 해제할 시그널 집합의 주소를 나타냄. oldset 이전 시그널 설정 값을 저장할 시그널 집합의 주소를 나타냄 함수 예제 #include #include #include #include int main(void) { sigset_t sig_set; int count; //sig..
C / LINUX alarm(2)
함수 기능 프로세스에 sigalrm을 전달하는 시스템호출 함수이다. 함수 원형 #include unsigned int alarm(unsigned int seconds); 함수 파라메터 seconds 타이머로 사용될 초 단위의 값 함수 예제 #include #include #include #include #define LINE_MAX 2048 static void ssu_alarm(int signo); int main(void){ char buf[LINE_MAX]; int n; if(signal(SIGALRM, ssu_alarm)==SIG_ERR){ fprintf(stderr,"SIGALRM error\n"); exit(1); } alarm(10); if((n=read(STDIN_FILENO, buf, L..
C / LINUX raise(3)
함수 기능 raise는 자기자신에게 시그널을 보내는 함수이다. ANSI C 에는 정의되어있으나 POSIX.1에는 정의되어 있지 않다 함수 원형 #include int raise(int sig); 함수 파라메터 sig signal을 넣으면 됨 함수 예제 #include #include #include void ssu_signal_handler1(int signo); void ssu_signal_handler2(int signo); int main(void){ if(signal(SIGINT, ssu_signal_handler1)==SIG_ERR){ fprintf(stderr,"cannot handle SIGINT\n"); exit(EXIT_FAILURE); } if(signal(SIGUSR1, ssu_sig..
C / LINUX signal(2)
함수 기능 지정한 시그널의 처리 방식을 등록하는 시스템 호출 함수이다. 함수 원형 #include sighandler_t signal(int signum, sighandler_t handler); 함수 파라메터 signal 인자에는 시그널 값을 넣는다. handler SIG_IGN 상수 , SIG_DFL상수, 시그널 발생시 호출될 함수의 주소를 넣을 수 있다. 함수 예제 #include #include #include #include static void ssu_signal_handler(int signo); int main(void){ if(signal(SIGINT, ssu_signal_handler)==SIG_ERR){ fprintf(stderr,"cannot handle SIGINT\n"); exi..
C/LINUX _t 자료형
기능 _t 자료형은 primitive 자료형이라고 한다. 과거와 달라진 자료형의 표현방식 때문에 이렇게 생겨난 것이다. 32비트 , 64비트의 변화차이때문에 사용을 많이한다. 그냥 일반적인 자료형으로 생각해도될듯 ssize_t - signed int size_t - unsigned int pid_t - PID 저장 타입