본문 바로가기

전체 글

[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.. 더보기
락 (lock)이란 무엇인가 Lock 락은 여러 스레드 간에 자원을 접근하는 매커니즘을 제공한다. 일반적으로 상호 배제 정책을 통해, 하나의 스레드가 특정 자원에 접근중인 경우에는 다른 스레드가 접근하지 못하도록 제한한다. 락이 없다면 두 개 이상의 스레드가 동시에 자원에 접근할 수 있으므로, 데이터의 무결성이 보장되지 않는다. 락의 개념은 멀티스레드를 사용하는 환경이라면 어디든 사용될 수 있다. ex)데이터베이스 락이 필요한 예시 - 여러 스레드가 동시에 공유 자원에 접근하는 경우 이해를 돕기 위해 간단한 예시를 들어보자. 스레드 A, B가 다음의 작업을 동시에 수행한다고 해보자. A, B는 변수 x를 공유한다. 스레드 A: x를 1 증가시킨다 스레드 B: x를 1 증가시킨다 그런데 'x를 1 증가시킨다'라는 작업은 기계어 상으로.. 더보기
리눅스 커널에 커밋 해보자 리눅스 커널에 커밋해보자! 리눅스 커널에 커밋한다는 건 정말 멋진 일이다. 하지만 나는 아직 쪼렙이기 때문에 커널의 중요한 파트에 기여할 수는 없다. 하지만 리눅스 커널에 커밋하기 위해서 항상 엄청난 일을 해야하는 건 아니다. 대신 나는 아주 작고 귀여운, 코딩 스타일 고치기를 해보기로 했다. 코딩 스타일을 점검해주는 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"이라고 보통 쓰여.. 더보기
[붕어빵 꼬리먼저팀] 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 동계 모각코] 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 powerful Javascript library that makes working with HTML5 canvas a breeze. Fabric provides a missing object model for canvas, as well as an SVG parser, layer of interacti fabricjs.com 학습 결과 Fabric.js 사용, 충돌판정 + 공 움직이.. 더보기
[붕어빵 꼬리먼저팀] 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 동계 모각코] 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. Keys are sorted by using the comparison function Compare. Search, removal, and insertion operations have logarithmic complexity. Maps are usual en.cppreference.com AVL tree · ratsgo's blog 이번 글에서는 AVL 트리에 대해 살펴보도록 .. 더보기
[붕어빵 꼬리먼저팀] 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일차 이번학기 '꼬리.. 더보기