Goならわかるシステムプログラミング
Goで始める、すこし低レイヤのプログラミング入門。入出力、ネットワーク、メモリなど、現実の世界でプログラムが動くために必要な機能をプログラム言語Goを通して覗いてみよう。OSの機能とは何か、それをプログラミングでどう利用するのか、システムプログラミングの世界をプログラマの視点から眺めていく連載企画。
2017年06月21日 17時00分更新
-
2017年06月21日 17時00分
プログラミング+
Go言語によるプログラマー視点のシステムプログラミング
第20回 Go言語とコンテナ
本連載の最終回。この連載ではプログラムがコンピュータ上で動くときに何が起きているのかをGo言語のコードを通して覗いてきました。今回はその締めくくりとしてコンテナについて紹介します。
-
2017年06月07日 21時30分
プログラミング+
Go言語によるプログラマー視点のシステムプログラミング
第19回 Go言語のメモリ管理
ソフトウェアにとってメモリは不可欠です。 実行する命令も、メモリにロードしなければ実行できません。今回は、Go言語のプログラマーが作成するプログラムの下で、どのようにメモリが管理され利用されるかを探ります。
-
2017年05月24日 16時00分
プログラミング+
Go言語によるプログラマー視点のシステムプログラミング
第18回 Go言語と並列処理(3)
前々回は並行・並列の基本とGo言語の文法、前回はOSスレッドとの違いと、並列処理をサポートする標準ライブラリの紹介をしてきました。 今回は、並行・並列で処理を記述するためのパターンをいくつか紹介します。 さらに、Goによるプログラミングには直接関係しませんが、これまでの説明では登場しない並列処理のモデルとして、GPUのスレッディンングモデルを紹介します。
-
2017年05月10日 20時00分
プログラミング+
Go言語によるプログラマー視点のシステムプログラミング
第17回 Go言語と並列処理(2)
Go言語の特徴として挙げられる機能の1つに「並列処理を書くのが簡単」というものがあります。今回は、Go言語の並行・並列処理のかなめともいえるgoroutine(ゴルーチン)周りを掘り下げていきます。
-
2017年04月26日 21時00分
プログラミング+
Go言語によるプログラマー視点のシステムプログラミング
第16回 Go言語と並列処理
Go言語の特徴として挙げられる機能の1つに「並列処理を書くのが簡単」というものがあります。今回は、Goにおける並列処理の機能を紹介と、そもそも現代のコンピューターでいかに並列処理が実現されているのかをとりあげます。
-
2017年04月12日 21時00分
プログラミング+
Go言語によるプログラマー視点のシステムプログラミング
第15回 Go言語で知るプロセス(3)
前々回と前回の記事では、プログラムの実行単位であるプロセスについて紹介し、Go言語から外部プロセスを実行する方法などを見ました。 今回は、プロセスに対して送られるシグナルと呼ばれる仕組みを説明します。
-
2017年03月29日 09時00分
プログラミング+
Go言語によるプログラマー視点のシステムプログラミング
第14回 Go言語で知るプロセス(2)
前回の記事では、プログラムの実行単位であるプロセスについて、さまざまな属性やリソースをGo言語の視点から紹介しました。 今回は、Go言語のプログラムから、他のプロセスを実行したり属性を変更したりする方法を紹介します。
-
2017年03月15日 15時00分
プログラミング+
Go言語によるプログラマー視点のシステムプログラミング
第13回 Go言語で知るプロセス(1)
オペレーティングシステムが実行ファイルを読み込んで実行するには、そのためのリソース(メモリやCPUなど)を用意しなければなりません。 そのようなリソースをまとめたプログラムの実行単位がプロセスです。
-
2017年02月22日 22時00分
プログラミング+
第12回 ファイルシステムと、その上のGo言語の関数たち(3)
前々回からファイルシステムに関係する話題を扱ってきました。 今回の記事では、その総まとめとして、アプリケーションから見たファイルシステム周りの最深部を辿っていきます。
-
2017年02月08日 17時00分
プログラミング+
第11回 ファイルシステムと、その上のGo言語の関数たち(2)
今回は、ファイルパスを扱いやすくするGo言語のパッケージについて説明してから、osパッケージだけでは実現できないファイルシステムの操作として「ファイルの変更監視」を紹介します。
-
2017年01月25日 16時00分
プログラミング+
第10回 ファイルシステムと、その上のGo言語の関数たち(1)
今回から、ファイルシステムと、その上のGo言語の関数たちと題してお届けします。今回は、ファイルシステムについて説明した後、その上に実装されているファイル操作のためのGo言語の基本関数を説明していきます。
-
2017年01月11日 09時00分
プログラミング+
第9回 Unixドメインソケット
今回はソケット通信の最終回ということで、POSIX系OSで提供されている機能・ Unixドメインソケットについて紹介した後、似た概念の機能としてWindowsの名前付きパイプについても説明します。
-
2016年12月28日 22時00分
プログラミング+
第8回 UDPソケットをGoで叩く
Go言語を使って低レベルプログラミングの世界を体験する連載。前回と前々回の記事では、Go言語によるTCPソケットの通信例を紹介してきました。 今回は、ネットワークの解説でTCPと一緒に紹介されることが多いUDPのソケットをGo言語で触ってみます。
-
2016年12月14日 15時00分
プログラミング+
第7回 GoでたたくTCPソケット(後編)
Go言語を使って低レベルプログラミングの世界を体験する連載。今回は、前回に引き続き、HTTPの機能を再現しながらソケットの使い方について学んでいきます。 HTTPの歴史を通して、ソケットの実行効率を向上させる方法を具体的に見ていきましょう。
-
2016年11月30日 12時00分
プログラミング+
第6回 GoでたたくTCPソケット(前編)
Go言語を使って低レベルプログラミングの世界を体験する連載、 今回からは実用的なアプリケーション開発にも役に立つであろうGo言語の低レベルなAPIを紹介していきます。 最初の題材は、ネットワークを利用したアプリケーションで特によく使われるソケット通信です。
-
2016年11月16日 09時00分
プログラミング+
第5回 Goから見たシステムコール
今回は、システムコールそのものについて深く掘り下げていきます。システムコールとは何者で、ないとどうなるのか? から、システムコールの呼び出しをモニターするツール紹介など。
-
2016年11月02日 09時00分
プログラミング+
第4回 低レベルアクセスへの入り口(3):io.Reader後編
前回に引き続き、バイナリ解析やテキスト解析、抽象的なio.Reader の構造体といった、少し低レベルな通信を直接行いたいときに便利なio.Readerの関連機能を紹介していきます。
-
2016年10月19日 19時00分
プログラミング+
第3回 低レベルアクセスへの入り口(2):io.Reader前編
「Go言語ではスクリプト言語並にかんたんにファイル読み込みやネットワークアクセスができる」、という説明を見かけたことがある方も多いでしょう。 確かにGo言語には、ファイル読み込みやネットワークアクセスの結果が1行で得られる、次のような関数が用意されています。
-
2016年10月05日 18時30分
プログラミング+
第2回 低レベルアクセスへの入り口(1):io.Writer
今回は、Go言語がOS直上の低レイヤーを扱いやすくするために提供している io.Writer インタフェースの紹介をします。Go言語がシステムプログラミングを簡単に行える言語でありつつも、それなりに少ない記述量で比較的高速で、それでいて多くのことが達成できるのは、これから説明するようなインタフェースにより、低レイヤーが扱いやすい構造になっているからです。
-
2016年09月21日 20時00分
プログラミング+
第1回 Goで覗くシステムプログラミングの世界
Go言語と開発環境を準備して、"Hello World!"プログラムからシステムプログラミングの世界をGo言語のデバッガーを使って覗いてみます。