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

분류 전체보기 496

[자료구조] 컴퓨터가 데이터를 저장하는 방법

컴퓨터가 자료를 저장하는 방식은 2가지 스토리지 : 영구적 저장소 저장속도가 느리고 받아오는 것도 느리다. 정확히 언제 사용할지 모르는 데이터 저장한다. 메모리 : 임시 저장소 저장속도가 빠르고 받아오는 것도 빠르다. 지금 당장 사용할 데이터 저장한다. 두개로 나눠 사용하는 이유는 효율적인 작업을 위해서이다. 자료구조 공부시엔, 이 중 메모리에서 데이터를 잘 활용하는 방법을 익힌다. 메모리 메모리는 각 주소가 담긴 일종의 긴 띠라고 생각하면 편하다. 긴 띠가 구역별로 나누어져 각각의 구역에 데이터가 저장되는 것이다. - 우리가 사용할 메모리는 RAM(Random Access Meomory, 임의접근메모리)이기때문에 어떤 주소에 있던 데이터접근에는 일정한 시간이 소요된다. (O(1)) - 바이트란 컴퓨터 ..

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

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