본문 바로가기

컴퓨터 공학/시스템 프로그래밍4

예외적인 제어흐름 (1부) 안녕하세요 파피몬입니다! 오늘은 예외적인 제어흐름에 대해 공부해봤습니다! Computer Systems A Programmer's Perspective (3rd Edition)의 내용을 공부한 것을 토대로한 포스팅입니다. 오개념이 있다면 알려주세요! 1부, 2부로 나눠져있습니다 :) 프로세서에 전원을 처음 공급하고 전원을 끌 때까지, 프로세서는 프로그램의 인스트럭션을 수행하게 된다. 하지만 현대 컴퓨터 시스템들은 프로그램의 실행과 반드시 관련이 있지 않은 시스템의 변화에도 반응할 수 있어야 한다! ex) HW타이머, 패킷의 네트워크 어댑터 도착, 디스크로부터 페이지 요청, 부모 프로세스가 자식 프로세스 기다리기 등등... 이를 예외적인 제어 흐름(Exceptional Control Flow)이라고 부른다.. 2020. 8. 30.
링커 (2부) 안녕하세요 파피몬입니다! 오늘은 링커에 대해 공부해봤습니다! Computer Systems A Programmer's Perspective (3rd Edition)의 내용을 공부한 것을 토대로한 포스팅입니다. 오개념이 있다면 알려주세요! 1부, 2부로 나눠져있습니다 :) ./prog로 실행하게 된다. 운영체제 입장에서 prog라는 커맨드를 처음 마주하게 되고, 아 이게 실행가능한 목적 파일이겠거니 하고 로더를 호출해준다. 디스크에 있던 실행가능한 목적파일의 code/data영역이 메모리에 복사되고, 프로그램의 엔트리 포인트에서 프로그램이 실행되게 된다. 1부에서 정적 링크의 단점을 넌지시 얘기해 봤다. printf()같이 자주 쓰이는 함수는 정적 링크로 실행 파일을 만들게 되면, 너도 나도 우리 모두 p.. 2020. 8. 29.
링커 (1부) 안녕하세요 파피몬입니다! 오늘은 링커에 대해 공부해봤습니다! Computer Systems A Programmer's Perspective (3rd Edition)의 내용을 공부한 것을 토대로한 포스팅입니다. 오개념이 있다면 알려주세요! 1부, 2부로 나눠져있습니다 :) 링커: 여러개의 코드와 데이터를 모아서 이를 연결해, 메모리에 로드 될 수 있고, 실행될 수 있는 한 개의 file을 만들어 내는 역할을 수행한다! 대부분의 컴파일 시스템은 사용자를 대신해 언어 전처리기, 컴파일러, 어셈블러, 링커를 필요에 따라 호출하게 만들어졌다. 이를 컴파일러 드라이버라고 한다. ex) GCC 드라이버 컴파일을 모두 마친 실행 파일을 prog라고 한다면, 우리는 쉘에 ./prog 라는 명령어를 통해 해당 파일을 실행.. 2020. 8. 29.
쉘(Shell)에 관하여 사실 운영체제와 시스템 쪽은 아직 내가 깊게 공부를 하지 않아서 잘 모른다ㅜㅜ 하지만 오늘 그래도 나름 새로운 지식(?)을 깨달은 것 같아 블로그에 포스팅 해보려고 한다. 만약 내가 잘못알고 있는게 있다면 제발 알려주셨으면 한다! Shell은 하드웨어를 동작하게 해주는 사용자 명령어 해석기! 커널(간략히 운영체제라고 생각하자)을 직접 사용자가 조작하는 것은 거의 불가능하다고 한다. 고로 커널을 조작할 수 있는 쉘이 내가 하드웨어와 소통할 수 있는 최밑단의 방법이다. 쉘에서 명령어를 치면, 커널이 쉘의 명령을 번역하여 알아듣고, 커널이 하드웨어에게 해당 명령을 수행해 달라고 부탁을 또 한다. 쉘은 종류가 한개가 아니다! Powershell, bash, cmd, zsh 등등 사용자에게 맞는 쉘을 통해 자기에.. 2020. 5. 10.
반응형