System_programming_study_210629

Day2

오늘은 STAR(simple TAR-like file archiving program)를 만들기 시작했다. 먼저 command line interface를 만들고, 그 후에 여러가지 test case들을 만들었다. 다음으로는 1개의 파일에 대해 동작하는 프로그램을 구현하기 시작했는데, 생각만큼 쉽지 않았다.

  1. 테스트 케이스들을 먼저 잘 설계하는 것이, 이후에 직접 프로그램을 짜는데에 도움이 된다는 것을 배웠다. 테스트 케이스를 통해서 상황들을 먼저 잘 정리해두면, 직접 구현할 때 놓치지 않고 잘 설계할 수 있겠다는 생각이 들었다.
  1. 코드를 짤 때 실제로 내부에서 시스템이 어떻게 돌아갈지 생각하는 것이 왜 중요한지 생각해 보았다.
    내 코드는 시스템의 입장에서 너무 낭비되는 부분이 많았다. 이유를 생각 해 보았는데, 첫째로는 내가 사용법만 보고 가져다 쓴 함수들의 내부 동작을 정확하게 이해하지 못했기 때문인 것 같고(이게 왜 위험한지 느낄 수 있었다.), 둘째로는 아직 시스템의 구조나 상황에 대한 개념이 정확하게 잡히지 않았기 때문이라는 생각이 들었다.
  1. C언어에서 구조체가 메모리에 어떻게 올라가는지를 알게 되었다. 구조체는 배열의 개념처럼 각각의 멤버들이 순서대로 나열되어 있다. 또한 C언어를 작성할때는, 어셈블리 언어로 어떻게 해석될지를 이해해야 하는 것이 중요하다는 것을 배웠다.
  1. fread(), fwrite() 함수를 사용하려고 하니 아직 헷갈리는 부분들이 많았다. 그래서 다시 살펴보게 되었다.
    두번째 와 세번째 인자는 각각 size 와 count를 나타내는데, salloc() 함수와 비슷하다고 생각하니 이해하기가 수월했다. 제대로 알지 못하고 함수를 사용하니 결국에는 다시 공부를 해야했다. 처음부터 사용하기 전에 확실히 공부를 해야겠다는 생각이 들었다.
  1. Command line interface를 먼저 꼼꼼하게 작성하면서 프로그램작성을 시작해 보았다. command line interface를 잘 만드는 것이 대부분의 에러처리를 하는 것이라고 한다. 나름 열심히 작성 해 보았는데, 만들고 나니 구조가 깔끔하게 잡히는 느낌이 들었다.