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

💻 CS/시스템프로그래밍 25

man command 살펴보기

man command man command는 UNIX에서 특정 command에 대한 메뉴얼을 불러오고 싶을 때 사용하는 command이다. man [모르는 커맨드] 맨 위에는 섹션과 매뉴얼 이름이 나온다. 공식 매뉴얼의 전체 내용 중 몇 번째 섹션에 해당하는 곳인지 알려준다. NAME : 커맨드의 이름과 커맨드에 대한 간단한 설명 SYNOPSIS : 어떻게 커맨드를 실행할 수 있는지 사용 가능한 형식을 보여줌. 대괄호가 포함된 것은 옵션, 그리고 대괄호 없는 것들이 인자. DESCRIPTION : 커맨드에 대한 좀더 자세한 설명과 각 옵션에 대한 설명 cf. 메뉴얼 살펴보기 화살표 : 아래 위 이동 스페이스바 : 한 페이지 후로 이동 b : 한 페이지 전으로 이동 g : 처음으로 이동 G : 끝으로 이동..

WSL (Windows Subsystem for Linux) 사용하기

이하의 내용은 노마드코더님의 무료공개 수업인 '개발자를 위한 윈도우 셋업'(https://nomadcoders.co/windows-setup-for-developers/lobby) 내용 일부를 정리한 것입니다. 개인 정리의 목적이 더 크니, 학습을 위해선 노마드코더님의 강의를 수강하는 것을 추천합니다. WSL(Windows Subsystem for Linux) WSL은 리눅스의 네이티브 바이너리를 윈도우 환경에서 돌아가도록 만들어낸 시스템이다. 즉, 윈도우 환경에서 가상머신없이 리눅스 배포판 버전을 설치해 사용할 수 있도록 해준다. 이를 위해선 Window에 Linux용 Windows 하위 시스템 옵션이 설치되어 있어야한다. Linux용 Windows 하위 시스템 옵션을 사용하기 위해 아래 명령어를 Po..

유닉스 시작하기

CLI 환경이란 Command Line Interface의 약자, 명령어를 기반으로 주로 검은 화면에서 돌아가는 시스템. 우리에게 익숙한 GUI(Graphical User Interface)와 다르게 키보드로 command만 입력해서 작동한다. CLI는 핵심기능만 작동하면된다는 점에서 성능이 가볍고, 클릭이 아닌 명령어를 기반으로 작동하기 때문에 단순하고 정확한 처리가 가능하다. 개발을 하다보면 이러한 CLI 환경에서 작업을 해야하는 경우가 많다. 대표적으로 UNIX가 그것이다. 리눅스, 우분투, 레드헷, 크롬OS, 안드로이드, IOS 등의 전신이 UNIX이다. 따라서 UNIX를 어느정도 익히면 나머지 OS에도 쉽게 적응할 수 있다. 유닉스와 유사유닉스 유닉스는 대부분 c언어로 작성되어 다른 컴퓨터에 적..

[시스템프로그래밍] 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이다. 따라..