전체 글291 (20191010_programming_tutoring)01_OT 튜터링 1회차 자료 2019. 10. 10. signal in terms of OS signal이란 상황을 알리는 정보이다. 프로세스가 종료 되었다던지. 프로세스가 이상한 짓을 한다던지 하는 상황을 os에게 알리기 위한 정보이다. OS는 프로세스들을 관리해야 되고 프로세스들이 어떤 짓을 하고 있는지 지켜봐야 한다. 그래서 signal이라는 규칙을 정해서 사용한다. 자식 프로세스가 끝나거나 런타임 에러로 중단되거나 키보드로 종료해달라는 명령을 주는 등 다양한 상황에 따른 시그널이 미리 정의되고 그것을 통해 상황을 처리하는 규칙이 있는 셈이다. OS는 시그널 정보를 이용하여 위와같은 상황을 처리하도록 한다. 특정 상황이 발생하면 SIGNAL이 어딘가에 저장되고 OS가 감지할 수 있도록 해야한다. 프로세스 내부에서 수식의 계산에서 0으로 나누는 등 이상한 짓을 한 경우에는 자신의 프로세스가 .. 2019. 10. 3. makefile 사용법 makefile은 컴파일과 링킹 자동화를 위한 도구이다. 세 개의 c 파일을 합쳐서 실행파일을 만들 경우 % gcc -c main.c % gcc -c foo.c % gcc -c fun.c 각각 object 파일을 만든 후 링킹을 시켜 실행파일을 만들어야 한다. 또한, clean이나 각종 환경변수 설정을 하게 되는 경우 반복되는 작업들이 많이 발생한다. 따라서, makefile을 통하여 반복되는 작업을 재사용하는 효과를 얻을 수 있다. object 파일이란 c파일 자체를 컴파일하여 얻은 binary 파일이다. main.c -> main.o , foo.c -> foo.o 가 된다. 여러 object 파일이 있다면 각각의 object 파일(binary, 기계어 파일)을 우선 만들고 이들을 링킹하여 실행파일을 .. 2019. 9. 28. lex 사용법 token을 자를 때 get_token() 과 같은 프로그램을 손수 작성할 수도 있다. int a ; 위의 한 줄을 분석하기 위해선 `int`, `a`, `;` 세개의 토큰으로 잘라야한다. 이를 편하게 lex 프로그램을 사용하면 세 개의 토큰을 손쉽게 얻을 수 있다. c언어로 "int a ;" 토큰으로 자르는 것을 만들어 보면 필요성을 느끼게 된다. 또한, c언어에서 분석할 토큰이 매우 많기 때문에 각 토큰을 잘 이해한 후에 lex를 잘 사용하는 것이 중요하다. c언어는 recursive descent parsing 방법으로 컴파일러를 만들기에는 안되는 문법 사항들이 존재한다고 한다. 따라서 parsing table을 이용하는 LR Parsing 방법을 사용해야 한다. 이를 위해 yacc를 통해 prod.. 2019. 9. 22. 이전 1 ··· 54 55 56 57 58 59 60 ··· 73 다음