본문 바로가기

전체 글154

[kernel/locking] spinlock (1) - spinlock 사용법 앞선 글에서 lock이란 무엇이고, lock의 필요성에 대해서 알아보았다. 이번 글에서는 가장 기본적인 spinlock을 리눅스 커널에서 어떻게 구현했는지 알아볼 것이다. 우선 관련된 개념을 몇 가지 살펴보자. 참고로, 이 문서에서 다루는 spinlock은 커널에서 사용하는 spinlock에 대해 다루고 있다. userspace에서의 spinlock은 pthread spinlock을 사용해야 한다. 자료구조 spinlock은 include/linux/spinlock_types.h에 spinlock_t로 정의되어있다. 한 번 살펴보자. /* include/linux/spinlock_types.h */ typedef struct spinlock { union { struct raw_spinlock rlock.. 2021. 3. 27.
락 (lock)이란 무엇인가 Lock 락은 여러 스레드 간에 자원을 접근하는 매커니즘을 제공한다. 일반적으로 상호 배제 정책을 통해, 하나의 스레드가 특정 자원에 접근중인 경우에는 다른 스레드가 접근하지 못하도록 제한한다. 락이 없다면 두 개 이상의 스레드가 동시에 자원에 접근할 수 있으므로, 데이터의 무결성이 보장되지 않는다. 락의 개념은 멀티스레드를 사용하는 환경이라면 어디든 사용될 수 있다. ex)데이터베이스 락이 필요한 예시 - 여러 스레드가 동시에 공유 자원에 접근하는 경우 이해를 돕기 위해 간단한 예시를 들어보자. 스레드 A, B가 다음의 작업을 동시에 수행한다고 해보자. A, B는 변수 x를 공유한다. 스레드 A: x를 1 증가시킨다 스레드 B: x를 1 증가시킨다 그런데 'x를 1 증가시킨다'라는 작업은 기계어 상으로.. 2021. 3. 16.
리눅스 커널에 커밋 해보자 리눅스 커널에 커밋해보자! 리눅스 커널에 커밋한다는 건 정말 멋진 일이다. 하지만 나는 아직 쪼렙이기 때문에 커널의 중요한 파트에 기여할 수는 없다. 하지만 리눅스 커널에 커밋하기 위해서 항상 엄청난 일을 해야하는 건 아니다. 대신 나는 아주 작고 귀여운, 코딩 스타일 고치기를 해보기로 했다. 코딩 스타일을 점검해주는 checkpatch.pl 스크립트의 warning을 고쳐보자. 우선 git 저장소를 클론한다. git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git drivers/staging 폴더에는 TODO 파일이 있는데, 코딩 스타일을 고쳐야 할 경우에는 "fix checkpatch.pll warning"이라고 보통 쓰여.. 2021. 3. 14.
[붕어빵 꼬리먼저팀] 6일차 불러오는 중입니다... [2021 동계 모각코] 2021-02-13 6일차 학습목표 Fabric.js 튜토리얼 학습하기 Introduction to Fabric.js. Part 1. — Fabric.js Javascript Canvas Library Introduction to Fabric.js. Part 1. Today I'd like to introduce you to Fabric.js — a po.. hyeyoo.com [붕어빵 꼬리먼저팀] 6일차 이번학기 '꼬리먼저'팀의 목표 : 매 주 각자 이해도에 적절한 난이도로 알고리즘 문제를 해결하여 논리적 사고를 함양 5일차 주제 : 알고리즘 및 자료구조 풀이 HackerRank 풀이 : www.hackerrank.com/int sallisme.tisto.. 2021. 2. 15.
[붕어빵 꼬리먼저팀] 5일차 [2021 동계 모각코] 2021-01-28 5일차 학습목표 AVL 트리로 C++의 std::map 구현하기 (iterator) std::map - cppreference.com (1) (2) (since C++17) std::map is a sorted associative container that contains key-value pairs with unique keys. Ke.. hyeyoo.com [붕어빵 꼬리먼저팀] 5일차 이번학기 '꼬리먼저'팀의 목표 : 매 주 각자 이해도에 적절한 난이도로 알고리즘 문제를 해결하여 논리적 사고를 함양 5일차 주제 : 알고리즘 및 자료구조 풀이 HackerRank 풀이 : www.hackerrank.com/int sallisme.tistory.com [붕어빵.. 2021. 2. 10.
[붕어빵 꼬리먼저팀] 4일차 [2021 동계 모각코] 2021-01-21 4일차 학습 목표 학습 결과 hyeyoo.com [붕어빵 꼬리먼저 팀] 4회차 - 학습 계획 2021/01/21 동계 모각코 4회차 오늘 학습할 주제는 회전하는 캘리퍼스입니다. www.acmicpc.net/problem/10254 해당 문제 풀이를 목표로 하겠습니다. kangwlgns.tistory.com [붕어빵 꼬리먼저 팀] 4회차 - 학습 마무리 2021/01/21 동계 모각코 4회차 오늘 공부하고자 했던 회전하는 캘리퍼스에 대한 이해와 문제 풀이를 마쳤습니다. [회전하는 캘리퍼스] www.acmicpc.net/problem/10254 회전하는 캘리퍼스를 사용하여 가장 먼 kangwlgns.tistory.com [붕어빵 꼬리먼저팀] 4일차 이번학기 '꼬리.. 2021. 1. 28.
[붕어빵 꼬리먼저팀] 3일차 [2021 동계 모각코] 2020-01-19 3일차 학습 목표 현재 구현중인 웹 서버에서 알 수 없는 이유로 connection reset이 되어서, TCP Connection reset by peer 오류에 대해서 조사하기 학습 결과 3일동안 헤매던 버그였는데, 디버깅을 하다보니 accept되 hyeyoo.com [붕어빵 꼬리먼저팀] 3일차 이번학기 '꼬리먼저'팀의 목표 : 매 주 각자 이해도에 적절한 난이도로 알고리즘 문제를 해결하여 논리적 사고를 함양 2일차 주제 : 백트래킹 백준 알고리즘 문제 15649번 - N과 M(1) : www.acmicpc.n sallisme.tistory.com [붕어빵 꼬리먼저 팀] 3회차 - 학습 계획 2021/01/19 동계 모각코 3회차 오늘 학습할 주제는 머지 .. 2021. 1. 21.
[붕어빵 꼬리먼저팀] 2일차 [2021 동계 모각코] 2020-01-09 2일차 목표 및 공부 주제 HTTP HTTP webserver 구현하기 & 디버깅 오늘 webserver에서 코드를 많이 고쳤더니 오류가 많이 나서, 이 오류들을 다 잡을 계획이다. hyeyoo.com [붕어빵 꼬리먼저팀] 2일차 이번학기 '꼬리먼저'팀의 목표 : 매 주 각자 이해도에 적절한 난이도로 알고리즘 문제를 해결하여 논리적 사고를 함양 2일차 주제 : 브루트 포스 백준 알고리즘 문제 1018번 - 체스판 다시 칠 sallisme.tistory.com [붕어빵 꼬리먼저 팀] 2일차 - 학습 계획 2021/01/09 동계 모각코 2일차 지난번에 주제를 두개나 잡고 시작했더니 시간이 상당히 부족했었습니다. 그래서 이번에는 하나의 주제만 잡고 더 집중해서 공.. 2021. 1. 19.
[붕어빵 꼬리먼저 팀] 1일차 [붕어빵 꼬리먼저 팀] 1일차 - 학습 마무리 2021/01/05 동계 모각코 1일차 오늘 학습하고자 했던 분야인 Two pointer와 Meet in the middle에 대한 문제를 각각 하나씩 골라서 풀이하려 했습니다. 생소한 내용을 바로 코딩하다보니 모각코 활동 시간으 kangwlgns.tistory.com [붕어빵 꼬리먼저팀] 1일차 이번학기 '꼬리먼저'팀의 목표 : 매 주 각자 이해도에 적절한 난이도로 알고리즘 문제를 해결하여 논리적 사고를 함양 1일차 주제 : 수학, 에라토스테네스의 체, 소수 백준 알고리즘 문제 1929 sallisme.tistory.com [2020 동계 모각코] 2021-01-05 1일차 목표 및 공부 주제 HTTP HTTP webserver 구현하기 & 디버깅 Algo.. 2021. 1. 9.