[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기
반응형

💻 CS 193

[자료구조] 자료구조란?

자료구조란? 데이터를 저장하고 관리하기 위한 구조이다. 예를 들어, 도서관에서 로미오와 줄리엣이라는 책을 찾으려고 할 때? [문학 도서 구역] -> [영문 고전 구역] -> [제목순 혹은 연도순로 꽂혀있는 책들]에서 로미오와 줄리엣을 찾는다. 이렇게 책을 찾을 수 있었던 것도 도서관 책들이 꽂혀있는 위치가 일정 구조를 가지고 있기 때문이다. 이렇듯 데이터를 정리하는 방법을 자료구조라고 한다. 더 정확히 정의하자면 자료구조는 데이터의 효율적인 접근 및 조작을 가능하게 해주는 데이터의 저장 및 관리 방식 이다. 도서관에서 로미오와 줄리엣을 찾을 수 있었듯이, 특정 데이터를 쉽게 찾고 활용하기 위해서는 특정 구조를 만들어야 한다. 자료구조를 사용하는 이유 set나 list를 예로 들어보자. 1~100000까지..

[시스템프로그래밍] POSIX Threads

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Why threads? - asynchronous events 효율적으로 처리 할 수 있음. - 공유 메모리 멀티 프로세서에서 parallel performance(병렬적 성능)을 얻을 수 있습니다. What are threads? - 하나의 실행단위, 실행흐름 - multiple processes와는 다르게 서로 공유하는 메모리 공간이 있어, pipe나 sockets등을 사용할 필요가 없다. - thread 각각이 자체 CPU에서 돌아가고, 서로 메모리를 공유하는 것처럼 보인다. - 멀티 프로세스에 비해 훨씬 빠르다. (fork() vs pthread_create() 시, pthrea..

[시스템프로그래밍] Times and Timers

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. POSIX Times - 시스템의 시간은 Epoch(컴퓨터의 시간이 시작되는 시점) 이후로 초 단위로 유지됩니다. - Epoch는 1970 년 1 월 1 일 00:00 (자정)으로서, UTC 시간을 기준으로 합니다. - POSIX는 시스템 시간이 실제 시간 및 날짜와 일치되는 방법을 지정하지 않았습니다. Time in seconds #include time_t time(time_t *tloc); - epoch time으로부터 얼마나 시간이 지났는지 - tloc : output파라미터, NULL이 아니라면, tloc에 저장 (return값과 동일, long타입의 일종) - 성공시 epoc..

[시스템프로그래밍] Signals

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Basic signal concept - 시그널은 소프트웨어적 통지수단. - 어떤 일이 일어났을때 그를 알려주는 방법 중 하나. - 생성되었지만 아직 전달되지 않은 신호는 pending 되었다라고 한다. - signal이 signal handler를 실행시키면서 프로세스가 해당 signal을 포착한다. - sigaction을 조정하여 signal handler를 호출하거나 SIG_DFL로 기본기능수행, SIG_IGN로 신호를 무시할 수있다. - signalmask를 통하여 해당 시그널을 차단할 수 있다. 모든 시그널은 SIG로 시작하는 symbolic name이 있다. - signal...

[시스템프로그래밍] UNIX Special Files

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Pipe -서로 협력하는 능력은 프로세스에 있어서 필수적이다. -가장 간단한 프로세스간 통신 방법은 pipe이다. -동일한 시스템에서 실행되는 프로세스가 정보를 공유하도록 한다. #include int pipe(int fd[2]); -2개의 file descriptor의 배열을 파라미터로 활용한다. -해당 파일의 [0]은 읽기전용이고, [1]은 쓰기전용이다. -즉, [1]의 내용이 파이프라는 special file을 통해 [0]으로 가는 것이다. -내용은 FIFO(first in first out) 방식으로 이동한다. -pipe는 보통 이름이 없다. -성공하면 파이프는 0을 리턴하고, ..

[시스템프로그래밍] Files and Directories

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Files and Directories OS 는 물리적 디스크를 file systems으로 정리한다. • File System – 파일들과 위치나 이름같은 속성들의 모임 – 디스크에서 파일의 물리적 위치를 지정하는 대신, 응용 프로그램은 filename과 offset을 지정한다. • Directory – 파일 이름을 Disk에 있는 파일의 실제 위치와 연결하는 directory entries를 포함하고 있는 파일. • 대부분의 file systems은 tree structure로 구성되어 있다. Directory Root directory – ‘/’ – file system tree의 ..

[시스템프로그래밍] UNIX I/O - 2

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Opening #include #include int open(const char *path, int flag); int open(const char *path, int flag, mode_t mode); -file offset : 입력 위치 -*path : 경로 / flag : 읽기or쓰기or읽기&쓰기 / mode : 파일을 새로만들시 해당 파일의 permission -open의 리턴값인 파일의 정보는 file descriptor라고 한다. -flag : 액세스 모드 3가지 중 하나를 고르고, '|'를 사용해서 추가 옵션을 줄 수 있다. ex) open("test.txt", O_RDW..

[시스템프로그래밍] UNIX I/O - 1

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. • Peripheral device (주변기기) – 컴퓨터시스템에 의해 접근 가능한 하드웨어의 일종 – ex) disks, tapes, CD-ROMs, screens, keyboards, printers, mouse devices and network interfaces • Device driver – 'device driver'라 불리는 시스템모듈에 의해 실행되는 시스템콜 함수가 각 입출력 장치를 제어할 수 있게 해준다. – 'device driver'는 용인되지 않은 사용을 막고, 디바이스의 실행의 디테일적인 부분을 숨긴다. 입출력은 어디에나 필요한 common한 task이다. 따라..

[시스템프로그래밍] 중간고사 대비

학교에서 듣는 수업의 중간고사 대비로 헷갈리는 부분을 정리한 것입니다. 개인저장용의 용도가 큽니다. 1. chmod: 특정 사용자의 permission을 변경할 수 있음. [u]or[g]or[o]or[a] +(-) [permisson] 으로 각자의 권한 변경가능. (빼기는 권한없애기) 2. gcc hello.c -o hello : 실행 가능한 파일 hello.out 생성 3. os의 3대기능 communication(통신), concurrency(동시성), asynchronous operations(비동기적실행) 4. signals(시그널) 시그널은 이벤트가 일어났음을 알리는 소프트웨어 메커니즘이다. 시그널은 동기적 또는 비동기적으로 생성될 수 있다. 5. 인터럽트 하드웨어 플래그들을 검사하여 인터럽트 ..

[시스템프로그래밍] Processes in UNIX

이것은 한낱 대학생이 교수의 수업을 듣고 작성한 개인저장용 복습 문서입니다. 그렇지만, 물론 지적과 수정은 환영합니다. Process 기본적 active entity. 실행중인 프로그램. 프로세스가 빠르게 context switch된다. 프로세스끼리 커뮤니케이션하려면 OS의 system call들을 사용해야 한다. process는 언제든 interrupt 가능 (by device or system call) PCB(process control block)안에서 관리 Context switch 발생시 현재 실행중인 프로세스 자신의 상태를 저장하고, 새로 선택된 프로세스 상태를 로드한다. 인터럽트, 디바이스, timer(tim quantum expired) 인터럽트 switch 가능. -과정 1. cpu가 ..

반응형