このページの本文へ

Goならわかるシステムプログラミング

Goならわかるシステムプログラミング

 Goで始める、すこし低レイヤのプログラミング入門。入出力、ネットワーク、メモリなど、現実の世界でプログラムが動くために必要な機能をプログラム言語Goを通して覗いてみよう。OSの機能とは何か、それをプログラミングでどう利用するのか、システムプログラミングの世界をプログラマの視点から眺めていく連載企画。

2017年06月21日 17時00分更新

  • この記事をはてなブックマークに追加
  • 本文印刷
  • Go言語とコンテナ

    2017年06月21日 17時00分

    プログラミング+

    Go言語によるプログラマー視点のシステムプログラミング

    第20回  Go言語とコンテナ

    本連載の最終回。この連載ではプログラムがコンピュータ上で動くときに何が起きているのかをGo言語のコードを通して覗いてきました。今回はその締めくくりとしてコンテナについて紹介します。

  • Go言語のメモリ管理

    2017年06月07日 21時30分

    プログラミング+

    Go言語によるプログラマー視点のシステムプログラミング

    第19回  Go言語のメモリ管理

    ソフトウェアにとってメモリは不可欠です。 実行する命令も、メモリにロードしなければ実行できません。今回は、Go言語のプログラマーが作成するプログラムの下で、どのようにメモリが管理され利用されるかを探ります。

  • Go言語と並列処理(3)

    2017年05月24日 16時00分

    プログラミング+

    Go言語によるプログラマー視点のシステムプログラミング

    第18回  Go言語と並列処理(3)

    前々回は並行・並列の基本とGo言語の文法、前回はOSスレッドとの違いと、並列処理をサポートする標準ライブラリの紹介をしてきました。 今回は、並行・並列で処理を記述するためのパターンをいくつか紹介します。 さらに、Goによるプログラミングには直接関係しませんが、これまでの説明では登場しない並列処理のモデルとして、GPUのスレッディンングモデルを紹介します。

  • Go言語と並列処理(2)

    2017年05月10日 20時00分

    プログラミング+

    Go言語によるプログラマー視点のシステムプログラミング

    第17回  Go言語と並列処理(2)

    Go言語の特徴として挙げられる機能の1つに「並列処理を書くのが簡単」というものがあります。今回は、Go言語の並行・並列処理のかなめともいえるgoroutine(ゴルーチン)周りを掘り下げていきます。

  • Go言語と並列処理

    2017年04月26日 21時00分

    プログラミング+

    Go言語によるプログラマー視点のシステムプログラミング

    第16回  Go言語と並列処理

    Go言語の特徴として挙げられる機能の1つに「並列処理を書くのが簡単」というものがあります。今回は、Goにおける並列処理の機能を紹介と、そもそも現代のコンピューターでいかに並列処理が実現されているのかをとりあげます。

  • Go言語で知るプロセス(3)

    2017年04月12日 21時00分

    プログラミング+

    Go言語によるプログラマー視点のシステムプログラミング

    第15回  Go言語で知るプロセス(3)

    前々回と前回の記事では、プログラムの実行単位であるプロセスについて紹介し、Go言語から外部プロセスを実行する方法などを見ました。 今回は、プロセスに対して送られるシグナルと呼ばれる仕組みを説明します。

  • Go言語で知るプロセス(2)

    2017年03月29日 09時00分

    プログラミング+

    Go言語によるプログラマー視点のシステムプログラミング

    第14回  Go言語で知るプロセス(2)

    前回の記事では、プログラムの実行単位であるプロセスについて、さまざまな属性やリソースをGo言語の視点から紹介しました。 今回は、Go言語のプログラムから、他のプロセスを実行したり属性を変更したりする方法を紹介します。

  • Go言語で知るプロセス(1)

    2017年03月15日 15時00分

    プログラミング+

    Go言語によるプログラマー視点のシステムプログラミング

    第13回  Go言語で知るプロセス(1)

    オペレーティングシステムが実行ファイルを読み込んで実行するには、そのためのリソース(メモリやCPUなど)を用意しなければなりません。 そのようなリソースをまとめたプログラムの実行単位がプロセスです。

  • ファイルシステムと、その上のGo言語の関数たち(3)

    2017年02月22日 22時00分

    プログラミング+

    第12回  ファイルシステムと、その上のGo言語の関数たち(3)

    前々回からファイルシステムに関係する話題を扱ってきました。 今回の記事では、その総まとめとして、アプリケーションから見たファイルシステム周りの最深部を辿っていきます。

  • ファイルシステムと、その上のGo言語の関数たち(2)

    2017年02月08日 17時00分

    プログラミング+

    第11回  ファイルシステムと、その上のGo言語の関数たち(2)

    今回は、ファイルパスを扱いやすくするGo言語のパッケージについて説明してから、osパッケージだけでは実現できないファイルシステムの操作として「ファイルの変更監視」を紹介します。

  • ファイルシステムと、その上のGo言語の関数たち(1)

    2017年01月25日 16時00分

    プログラミング+

    第10回  ファイルシステムと、その上のGo言語の関数たち(1)

    今回から、ファイルシステムと、その上のGo言語の関数たちと題してお届けします。今回は、ファイルシステムについて説明した後、その上に実装されているファイル操作のためのGo言語の基本関数を説明していきます。

  • Unixドメインソケット

    2017年01月11日 09時00分

    プログラミング+

    第9回  Unixドメインソケット

    今回はソケット通信の最終回ということで、POSIX系OSで提供されている機能・ Unixドメインソケットについて紹介した後、似た概念の機能としてWindowsの名前付きパイプについても説明します。

  • UDPソケットをGoで叩く

    2016年12月28日 22時00分

    プログラミング+

    第8回  UDPソケットをGoで叩く

    Go言語を使って低レベルプログラミングの世界を体験する連載。前回と前々回の記事では、Go言語によるTCPソケットの通信例を紹介してきました。 今回は、ネットワークの解説でTCPと一緒に紹介されることが多いUDPのソケットをGo言語で触ってみます。

  • GoでたたくTCPソケット(後編)

    2016年12月14日 15時00分

    プログラミング+

    第7回  GoでたたくTCPソケット(後編)

    Go言語を使って低レベルプログラミングの世界を体験する連載。今回は、前回に引き続き、HTTPの機能を再現しながらソケットの使い方について学んでいきます。 HTTPの歴史を通して、ソケットの実行効率を向上させる方法を具体的に見ていきましょう。

  • GoでたたくTCPソケット(前編)

    2016年11月30日 12時00分

    プログラミング+

    第6回  GoでたたくTCPソケット(前編)

    Go言語を使って低レベルプログラミングの世界を体験する連載、 今回からは実用的なアプリケーション開発にも役に立つであろうGo言語の低レベルなAPIを紹介していきます。 最初の題材は、ネットワークを利用したアプリケーションで特によく使われるソケット通信です。

  • Goから見たシステムコール

    2016年11月16日 09時00分

    プログラミング+

    第5回  Goから見たシステムコール

    今回は、システムコールそのものについて深く掘り下げていきます。システムコールとは何者で、ないとどうなるのか? から、システムコールの呼び出しをモニターするツール紹介など。

  • 低レベルアクセスへの入り口(3):io.Reader後編

    2016年11月02日 09時00分

    プログラミング+

    第4回  低レベルアクセスへの入り口(3):io.Reader後編

    前回に引き続き、バイナリ解析やテキスト解析、抽象的なio.Reader の構造体といった、少し低レベルな通信を直接行いたいときに便利なio.Readerの関連機能を紹介していきます。

  • 低レベルアクセスへの入り口(2):io.Reader前編

    2016年10月19日 19時00分

    プログラミング+

    第3回  低レベルアクセスへの入り口(2):io.Reader前編

    「Go言語ではスクリプト言語並にかんたんにファイル読み込みやネットワークアクセスができる」、という説明を見かけたことがある方も多いでしょう。 確かにGo言語には、ファイル読み込みやネットワークアクセスの結果が1行で得られる、次のような関数が用意されています。

  • 低レベルアクセスへの入り口(1):io.Writer

    2016年10月05日 18時30分

    プログラミング+

    第2回  低レベルアクセスへの入り口(1):io.Writer

    今回は、Go言語がOS直上の低レイヤーを扱いやすくするために提供している io.Writer インタフェースの紹介をします。Go言語がシステムプログラミングを簡単に行える言語でありつつも、それなりに少ない記述量で比較的高速で、それでいて多くのことが達成できるのは、これから説明するようなインタフェースにより、低レイヤーが扱いやすい構造になっているからです。

  • Goで覗くシステムプログラミングの世界

    2016年09月21日 20時00分

    プログラミング+

    第1回  Goで覗くシステムプログラミングの世界

    Go言語と開発環境を準備して、"Hello World!"プログラムからシステムプログラミングの世界をGo言語のデバッガーを使って覗いてみます。

ピックアップ