タグ

ブックマーク / qiita.com/rarul (5)

  • シグナルハンドラにprintf()を書いてはいけない - Qiita

    三行でまとめると シグナルハンドラ内でprintf()してはいけない というより、余計な処理を書いてはいけない もう一度言う、シグナルハンドラで余計なことをするな、非常に大事なことだ はじめに シグナルハンドラでやってよい処理は非常に限られるのに、全くルールを守らないサンプルコードが世の中に大量に出回っている。printf()するなんてもってのほかなのだが、カジュアルにそこらじゅうで見かけて非常に悲しい。 この記事では、そんな状況を少しでも改善したいと思い初心者向きに書いたものだ。そのため、下記では、回避するにはどう実装すればよいのか、ルールを破るとどうなるのか、といった点を先に簡潔に記述する。 なぜしてはいけないのか、POSIXだとかリエントラントだとか、は下の方に追いやっている。玄人は読んでてウズウズするだろうが、細かい話はできるだけ目につかないような構成としたため了解いただきたい。

    シグナルハンドラにprintf()を書いてはいけない - Qiita
  • Linuxのswappinessは本当にスワップしにくさを設定できるのか - Qiita

    いきなり結論 Q. swappinessって当に「スワップしにくさ」を設定できるの? A. はい、当です。 ただそれが当にあなたの望む動作なのかについては注意が必要です。 swappinessは、0から100までの値を設定することができ、それはメモリを回収(scan)するときにどこから回収するかに効いて、200分率で下記のように使われる (swappiness)の割合でANONYMOUSEをscanする (200-swappiness)の割合でfile_backedをscanする Red Hatのマニュアルにある通り、小さくするにしても10あたりが無難。1だとかなり攻めている。下記で見ていくが、よほどわかっている場合を除いて、0にするのはやめておいたほうが良い。 はじめに Linuxには「スワップのしにくさ」を設定できるswappinessというパラメータがある。 「スワップなんてで

    Linuxのswappinessは本当にスワップしにくさを設定できるのか - Qiita
  • Linuxのschedのpriorityとリアルタイムシステムについて - Qiita

    はじめに Linuxでいわゆるリアルタイムシステムを指向するときはsched(7)のpriority値を意識することになるが、個人的にいつもpriorityの値を相対的にしか見られず、絶対的にかつどっちが上・下かについてわからなくなってしまうので、そんな自分のためにメモ書きしておくことにした・・・つもりが、なにか途中から趣旨を間違えた記事になってしまった。当は「priority一覧表」がほしかっただけだったのに... なお、Linux-4.10くらい、procps-ng-3.3.12くらい、util-linux-2.29.2くらいを見ています。 schedのpolicyとpriority値 Linuxでは、ユーザプログラム・kernelスレッド問わず、タスクにsched policyを設定できる。下記の上3つがいわゆるリアルタイムスケジューリング、下3つがいわゆるタイムシェアスケジューリ

    Linuxのschedのpriorityとリアルタイムシステムについて - Qiita
  • アセンブラを混ぜてコンパイルするとスタックが実行可になってしまう話 - Qiita

    #include <stdio.h> #include <string.h> int main(){ FILE *fp; fp = fopen("/proc/self/maps", "re"); if (fp != NULL) { char buf[256]; while (fgets(buf, sizeof(buf), fp) != NULL) { if (strstr(buf, "[stack]") != NULL) { puts(buf); } } fclose(fp); } return 0; } [rarul@tina ~]$ gcc -c -o main.o main.c [rarul@tina ~]$ gcc -c -o asm.o asm.S [rarul@tina ~]$ gcc -o stack_exec main.o asm.o [rarul@tina ~]$ ./s

    アセンブラを混ぜてコンパイルするとスタックが実行可になってしまう話 - Qiita
  • プログラマのためのフラッシュメモリ入門 - Qiita

    はじめに 最近はSSDが広まってきたため語られることが増えてきたものの、以前はそうでもなかったような、そんなフラッシュメモリにまつわる話をこのへんでプログラマ視点でまとめておこうと思う。 技術的な話というよりポエム感がでているかもしれない。内容がLinuxにかたよっているかもしれない。 FTLとMTD HDDと比較するとフラッシュメモリは以下のような点が異なる。 read, writeはページ単位で行う 通常はwriteは上書きできない writeしなおすためには一度eraseをする必要がある eraseはブロック単位で行う 今時のMLC NANDだと、ページは8KiBでブロックが512KiBとかそんなオーダ、 NORはランダムreadできる(でも最近はSPI接続だよねぇ)、ビットを寝かす方向なら上書きwriteできる(でもECCが高度化する今時のNANDではやらないよねぇ)、とか細かい話

    プログラマのためのフラッシュメモリ入門 - Qiita
  • 1