본문 바로가기
반응형

지식/시스템프로그래밍3

System-Level I/O Unix I/O리눅스에서 파일은 바이트로 이루어진 녀석그래서 종류도 다양할 수 있음Regular fileDirectorySocketOpening Filesopen() 은 커널에게 “이 파일을 사용하겠다”고 알리는 시스템 호출이게 성공하면 파일 디스크립터를 반환해줌.반환값인 fd 는 해당 파일을 가리키는 식별 번호이걸로 나중에 read(), write(), close() 등을 호출함.만약에 open()이 실패하면 fd == -1 이고 에러로는 perror() 출력근데 내가 이렇게 직접 호출하기 전에 프로세스가 시작할 때 기본적으로 파일을 3개 열고 시작함.0 : stdin, 표준 입력1 : stdout, 표준 출력2 : stderr , 표준 에러 출력아무 파일을 열기 전에 기본적으로 0, 1, 2는 이미 .. 2025. 4. 21.
Exceptional Control Flow: Signals and Nonlocal Jumps Shells쉘은 운영체게에서 사용자의 명령을 해석하고 실행하는 명령어 인터프리터init [1] : 시스템 부팅 시 가장 먼저 실행되는 최초의 프로세스Login shell : 사용자가 로그인하면 init 이 로그인 쉘을 실행함.Deamon : 시스템의 백그라운드에서 실행되는 특별한 프로세스기본적인 쉘 구조커맨드 라인은 사용자의 명령을 저장할 저장고프롬프트 표시는 “> “ 로 함.Fgets 를 통해서 사용자 입력 받음입력 종료 감지하면 쉘 종료그게 아니면 명령어 실행eval FunctionCopyvoid eval(char *cmdline) { char *argv[MAXARGS]; /* execve()에 전달할 명령어 리스트 */ char buf[MAXLINE]; /* 명령어를 저장할 버퍼 */.. 2025. 4. 10.
Exceptional Control Flow: Exceptions and Processes Exceptional Control Flow: Exceptions and ProcessesControl FlowProcess는 한번에 한 가지 일만 수행CPU는 시작(Startup)에서 종료(Shutdown)까지 명령어(Instruction)를 순차적으로 읽고 실행이 순차적인 실행 흐름을 Control Flow라고 함.추후에 예외적인 상황이 발생하면 흐름이 변경될 수도 있긴 함 (인터럽트, 시스템 호출 … )Altering the Control Flow기본적인 Control Flow의 변경 방법은 두 가지 있음점프(Jump)와 분기(Branches)위에 것들로는 충분하지 않음 (System State 변화에 대한 대응이 부족하다!)예외 적인 제어 흐름이 필요하다!Exceptional Control Flo.. 2025. 3. 29.
반응형