目次

UTF-16, メモリ, 定理, リアルタイムOS

+
その他

Unicode, UTF-8, UTF-32, Cpp
C++で学ぶUnicodeの基本とUTF-8, UTF-16, UTF-32の相互変換アルゴリズム | プログラミング

広く使われているUnicode規格を理解し, エンコーディングの手法, UTF-8, UTF-16, UTF-32, を理解して, 多言語の文字コードを扱えるようになることを目指します. 具体的に, UTF-8, UTF-16, UTF-32間の変換方法をC++で実装し, 手法はできるだけ速い方法を用います.

C++でUnicode文字列(UTF-8, UTF-16, UTF-32)を扱うライブラリ | C++ライブラリ

本稿では, C++でバージョンに左右されずに文字を扱うために, 以下の機能を持つライブラリを紹介します.

  • 型依存しないUTF-8, UTF-16, UTF-32間の相互変換
  • UTF-8, UTF-16文字(コードポイント)ごとのイテレート
  • 標準イテレータを使ったイテレート
  • 型依存しないイテレータの対応
アルゴリズム, プログラミング
C++で学ぶUnicodeの基本とUTF-8, UTF-16, UTF-32の相互変換アルゴリズム | プログラミング

広く使われているUnicode規格を理解し, エンコーディングの手法, UTF-8, UTF-16, UTF-32, を理解して, 多言語の文字コードを扱えるようになることを目指します. 具体的に, UTF-8, UTF-16, UTF-32間の変換方法をC++で実装し, 手法はできるだけ速い方法を用います.

C++
C++で学ぶUnicodeの基本とUTF-8, UTF-16, UTF-32の相互変換アルゴリズム | プログラミング

広く使われているUnicode規格を理解し, エンコーディングの手法, UTF-8, UTF-16, UTF-32, を理解して, 多言語の文字コードを扱えるようになることを目指します. 具体的に, UTF-8, UTF-16, UTF-32間の変換方法をC++で実装し, 手法はできるだけ速い方法を用います.

C++でUnicode文字列(UTF-8, UTF-16, UTF-32)を扱うライブラリ | C++ライブラリ

本稿では, C++でバージョンに左右されずに文字を扱うために, 以下の機能を持つライブラリを紹介します.

  • 型依存しないUTF-8, UTF-16, UTF-32間の相互変換
  • UTF-8, UTF-16文字(コードポイント)ごとのイテレート
  • 標準イテレータを使ったイテレート
  • 型依存しないイテレータの対応
基本から理解するC++スマートポインタ

本来手動でメモリ管理しなければならない動的なオブジェクトを、スコープによって自動でメモリ管理するもの。

ライブラリ
C++でUnicode文字列(UTF-8, UTF-16, UTF-32)を扱うライブラリ | C++ライブラリ

本稿では, C++でバージョンに左右されずに文字を扱うために, 以下の機能を持つライブラリを紹介します.

  • 型依存しないUTF-8, UTF-16, UTF-32間の相互変換
  • UTF-8, UTF-16文字(コードポイント)ごとのイテレート
  • 標準イテレータを使ったイテレート
  • 型依存しないイテレータの対応
OS
メモリ管理 | 仕組み

OSはタスクごとにメモリを動的に割り当てる必要があります(タスクが保有するメモリに関することはのちに説明します). というのも, これらのタスクはアプリケーション実行中に生成, 削除される可能性があるからです.

今回では, このメモリ管理をOSが行うことにします. OSがメモリ管理を行うことで, OS動作の理解がしやすくなるからです.

このページでは, OSによるメモリ管理をどのように実装するのか説明します.

メモリの構造 | タスク管理

ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.

Arduino上で走るOSの作り方 | Arduino

OSは日常のあらゆる場所で目にします. パソコンには必ずと言っていいほどOSが走っており, 携帯, ゲーム機などにもOSが走っております. このような普段よく使うOSですが, そのOSの仕組みを分かっていても, 実際どのように作るのかはよく知られておらず気になります.

このページでは, 実際にArduinoで動くOSを作成することで, OSの理解を深めます. 使用するプログラミング言語はC言語です. (作成といいましても, すでに在りますFreeRTOSから必要な機能を抜き出し, Arduinoで動くようにしました.) なお, 今回扱うOSは汎用OSではなくリアルタイムOS(RTOS)と呼ばれるものです. 汎用OSとは, すべてのタスクに等しく優先度が与えられますが, RTOSではタスクごとに優先度を設定できます.

話の進め方ですが, 今回のOS製作では実装に重きを置くため, コードを中心に話を進めていきます. 各コードごとに簡単な説明を行い, その中で特に重要な部分―OSの仕組みに深くかかわる部分―もしくはさらに詳しい説明については別ページで行います. これら別ページ―詳細ページ―は子コンテンツである"仕組み"にまとめられています.

話の流れは次のとおりです.

  • RTOSとは
  • 目標と使い方
  • 準備
  • ファイル構成
  • スクリプト
  • ボードの設定
  • 仕組み

対応状況

  • Arduino UNO
  • Arduino Mega

動作確認済み環境

  • Arduino IDE 1.8.10
  • Arduino AVR Boards 1.8.1
C言語
メモリ管理 | 仕組み

OSはタスクごとにメモリを動的に割り当てる必要があります(タスクが保有するメモリに関することはのちに説明します). というのも, これらのタスクはアプリケーション実行中に生成, 削除される可能性があるからです.

今回では, このメモリ管理をOSが行うことにします. OSがメモリ管理を行うことで, OS動作の理解がしやすくなるからです.

このページでは, OSによるメモリ管理をどのように実装するのか説明します.

メモリの構造 | タスク管理

ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.

メモリ管理
メモリ管理 | 仕組み

OSはタスクごとにメモリを動的に割り当てる必要があります(タスクが保有するメモリに関することはのちに説明します). というのも, これらのタスクはアプリケーション実行中に生成, 削除される可能性があるからです.

今回では, このメモリ管理をOSが行うことにします. OSがメモリ管理を行うことで, OS動作の理解がしやすくなるからです.

このページでは, OSによるメモリ管理をどのように実装するのか説明します.

基本から理解するC++スマートポインタ

本来手動でメモリ管理しなければならない動的なオブジェクトを、スコープによって自動でメモリ管理するもの。

Stack
メモリの構造 | タスク管理

ここでは, 実際にタスクが作成されたときのメモリの構造を示していきたいと思います. メモリでの各領域の説明, この構造によるmallocの問題を示します.

行列
図で理解する変換行列と表現行列 | 線形代数

線形代数にある線形写像, 基底の変換行列, 表現行列などを理解するとき, 今どこの座標系にいるのか, 基底は変わったのか, ここはベクトル空間かという悩みに会います.

本稿では, 変換行列や表現行列を図で理解することを目的にします. 行列の掛け算が点の移動であることを意識すると, 理解しやすくなります.

ベクトル, 図で理解
図で理解する変換行列と表現行列 | 線形代数

線形代数にある線形写像, 基底の変換行列, 表現行列などを理解するとき, 今どこの座標系にいるのか, 基底は変わったのか, ここはベクトル空間かという悩みに会います.

本稿では, 変換行列や表現行列を図で理解することを目的にします. 行列の掛け算が点の移動であることを意識すると, 理解しやすくなります.

Arduino
Arduino上で走るOSの作り方 | Arduino

OSは日常のあらゆる場所で目にします. パソコンには必ずと言っていいほどOSが走っており, 携帯, ゲーム機などにもOSが走っております. このような普段よく使うOSですが, そのOSの仕組みを分かっていても, 実際どのように作るのかはよく知られておらず気になります.

このページでは, 実際にArduinoで動くOSを作成することで, OSの理解を深めます. 使用するプログラミング言語はC言語です. (作成といいましても, すでに在りますFreeRTOSから必要な機能を抜き出し, Arduinoで動くようにしました.) なお, 今回扱うOSは汎用OSではなくリアルタイムOS(RTOS)と呼ばれるものです. 汎用OSとは, すべてのタスクに等しく優先度が与えられますが, RTOSではタスクごとに優先度を設定できます.

話の進め方ですが, 今回のOS製作では実装に重きを置くため, コードを中心に話を進めていきます. 各コードごとに簡単な説明を行い, その中で特に重要な部分―OSの仕組みに深くかかわる部分―もしくはさらに詳しい説明については別ページで行います. これら別ページ―詳細ページ―は子コンテンツである"仕組み"にまとめられています.

話の流れは次のとおりです.

  • RTOSとは
  • 目標と使い方
  • 準備
  • ファイル構成
  • スクリプト
  • ボードの設定
  • 仕組み

対応状況

  • Arduino UNO
  • Arduino Mega

動作確認済み環境

  • Arduino IDE 1.8.10
  • Arduino AVR Boards 1.8.1
編集中, スマートポインタ
基本から理解するC++スマートポインタ

本来手動でメモリ管理しなければならない動的なオブジェクトを、スコープによって自動でメモリ管理するもの。

「https://contentsviewer.work/Master/:tagmap/UTF-16,メモリ,定理,リアルタイムOS?layer=ja」から取得