리눅스
-
오픈소스 라이센스 정리개발/오픈소스 2019. 6. 9. 11:04
오픈소스를 이용해서 개발하는 경우 코드를 무료로 보고 사용할 수 있어 개발하기 편리하다는 장점이 있으나 사용하고 있는 오픈소스가 어떤 라이센스를 가지느냐에 따라서 상업적인 이용이 제한될 수도 있고 내가 만든 코드를 공개해야 할 의무까지 생길 수 있다. 이런 경우를 예방하려면 개발하기 전부터 사용할 오픈소스 라이센스에 대해 검토해둘 필요가 있다. 이번 포스트에서는 유명한 오픈소스 라이센스들에 대해서 간단히 정리를 해보려고 한다. 0. 라이센스란? 소프트웨어의 지적 재산권을 일컫는 말이다. 음악의 저작권과 비슷한 개념 정도로 생각하면 될 것 같다. 처음 코딩에 입문하는 사람들은 남들이 짠 코드랑 본인이 짠 것과 함수와 변수 명만 제외하면 거의 차이가 없어(헬로 월드 수준이니까) 딱히 저작권이라고 할만한 것이..
-
스핀락개발/컴퓨터사이언스 2018. 7. 23. 22:23
멀티프로세서 환경에서는 시스템에서 생성된 프로세스가 하드웨어에 설치된 CPU의 수만큼 동시에 실행된다. CPU에서 동작 중인 프로세스는 메모리 영역에 할당된 데이터중 연산이 필요한 값을 읽고 쓰는 작업을 수행하게 되는데 이때 여러 개의 프로세스가 같은 데이터 영역을 공유하게 되는 경우가 있다. 여러 개의 프로세스가 공통된 전역 변수의 값을 읽는 경우가 대표적인 예다. 데이터 값이 고정되고 모든 프로세스가 고정된 값을 읽기만 하면 별 다른 문제는 없다. 그런데 누군가가 쓰게 되는 경우부터 싱크 문제가 생긴다. A랑 B 프로세스가 있다고 해보자. A 프로세스는 C와 D의 데이터 값을 수정하게 되어있고, B 프로세스는 A프로세스보다 조금 늦게 생성되어 A 프로세스가 수정한 값을 읽도록 짜여져 있다. 싱글코어에..
-
eventfd개발/컴퓨터사이언스 2018. 7. 18. 21:37
eventfd는 리눅스기반 운영체제에서 파일 디스크립터를 통해 프로세스들끼리 통신 할 수 있는 API중 하나다. IPC로 가장 유명한 pipe는 read와 write용으로 채널을 따로 만드는 것과는 달리 eventfd에서는 읽고 쓸 파일 디스크립터 하나면 충분하기 때문에 번거로운 세팅작업 없이 간단하게 구현 할 수 있다. 그러나 단 한개의 채널을 사용하는만큼 사용할 수 있는 기능은 제한적이다. 이 파일 디스크립터로 교환할 수 있는 값은 1 이상의 64비트 정수 하나가 전부라 데이터 전송보다는 이름처럼 프로세스간에 event를 전달하는 용도로 사용한다. 1. eventfd(uint64 initval, int flag) 프로세스들끼리 통신 할 수 있는 파일 디스크립터를 만드는 함수다. 종료후에는 채널로 사용..
-
리눅스 디스크, 폴더 용량 확인하기개발/삽질 기록 2018. 5. 26. 14:29
매번 구글창에 디스크/파일 용량을 확인하는 단축키를 찾기 번거로워서 이번 포스트로 정리하고 머릿속에 기억해두려고 한다. 1. 디스크 용량 확인, df 시스템상에서 FILE이 있는 곳의 파일시스템에 대한 정보를 보여준다. 즉 시스템에 마운트되어 있는 모든 것들에 대한 사용 정보를 출력한다는 뜻.그냥 df를 검색하면 아래처럼 나온다. 여기서 1K-blocks는 파일시스템의 전체 용량, Used는 사용중인 크기, Available은 사용가능한 메모리의 크기를 의미한다. 그런데 위 그림은 바이트 단위라서 보기가 어렵다. -h 옵션을 넣어서 human readable하게 변환하자. 훨씬 직관적으로 보인다. df --help 로 검색하면 다양한 옵션을 발견할 수 있으니 이것도 적극적으로 활용하자. 디스크 용량 검색..
-
디바이스트리(Device Tree)개발/컴퓨터사이언스 2017. 1. 4. 19:07
운영체제(Operating System)가 하드웨어와 소프트웨어 사이의 중간자 역할을 하고 사용자의 애플리케이션이 하드웨어를 조작하기 쉬운 환경을 제공 한다는 것은 컴퓨터 전공자라면 운영체제 수업시간에 귀가 빠지도록 배웠을 것이다. 운영체제는 오드로이드, 아두이노, 주노보드처럼 다양한 보드 위에 있는 RAM, CPU, EMMC등 하드웨어들을 초기화 및 조작하는 역할을 한다. 지금 이 글을 쓰기 위해 타자를 치는 동안 운영체제는 타자 입력 인터럽트를 처리하고 소프트웨어에 전달하는 일을 계속 하고 있다. 어떤 메인 보드를 사용하더라도 운영체제의 기본 뼈대는 동일해야 한다. 하지만 메인 보드들마다 상세 하드웨어 스펙은 천지 차이다. 예를 들면 RAM의 크기나 USB의 물리 주소의 위치처럼 당연한 것 부터 이 ..
-
Linux OS 부팅 과정개발/컴퓨터사이언스 2016. 10. 2. 17:18
이번 글을 리눅스 OS가 설치된 컴퓨터가 부팅 되는 과정을 설명하는 포스트다. 부트로더가 하는 역할과 초기 부팅시 커널 이미지가 어떤 작업을 하는지 파악하는것에 초점을 두고 작성했으며 중간중간 이들의 정의도 포함되있다. http://www.tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html 페이지를 참고해서 글을 작성했다. 1. 컴퓨터 전원 On 사용자가 컴퓨터 전원을 키면 메인보드에서는 전원이 켜진것을 확인하고 특정 저장위치에 심어둔 부트로더를 실행시킨다. 2. 부트로더(Boot loader) 부트로더의 기능은 말그래도 부팅할 때(Boot) 로드(Load)하는 역할을 한다. 무엇을 로드하는지가 중요한데 OS에 따라 다르지만 리눅스를 기준으로 설명하면, 부트로더는 리눅스..