2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

OSを作ってみよう

1 :( ´ -`):03/02/26 23:52
いっちょOSでも作ってみようかな。

2 :名無したん@お嬢:03/02/26 23:53
2!ヽ(`ー´)ノ

3 :3:03/02/26 23:56
      

4 :Be名無しさん:03/02/26 23:58


5 :( ´ -`):03/02/26 23:59
PC用の32ビットプリエンプティブマルチタスクな保護OS。
APIは作りながら決める。
ファイルシステムはFATがベター。
デバドラは出来たらBIOSでやりたい。
取り敢えずはこんな感じでかな?

6 :Be名無しさん:03/02/27 00:10
>>5
> APIは作りながら決める。
仕様は最初に決めるべし

> ファイルシステムはFATがベター。
ファイルシステムもテメーでつくてミロ

7 :( ´ -`):03/02/27 00:11
まずはブートから。やっぱりGRUBを使うのが楽でしょう。
http://www.gnu.org/software/grub/
カーネルの構造は伝統的UNIXを真似るのが無難。
つまりモノリシックカーネル。
開発環境はGNU系で行くことにします。

8 :( ´ -`):03/02/27 00:16
>仕様は最初に決めるべし
初心者にとってそれは意外と難しいです。最初にちゃんと仕様を決めても、
いざ実装する段階になって困難どと気付いたりとか。

>ファイルシステムもテメーでつくてミロ
習作だから出来るだけ手っ取りばやいのがいいかなと思ったんだよぅ。

9 :( ´ -`):03/02/27 00:19
今からコード書いてきます。

10 :Be名無しさん:03/02/27 00:25
ショシンシャがOS作るってか

はらいてーぜ

VBあたりでちまちまあそんでな

11 :( ´ -`):03/02/27 02:00
ブートしました。
さてどこにアプしようか。

12 :( ´ -`):03/02/27 02:18
アプしました。
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030226.tar.gz

13 :( ´ -`):03/02/27 13:56
そろそろ名前を決めときたいんだが良いのが思い付かん。
完成時はNWSOSのGUI無しバージョンみたいな感じに成る予定。
アイデア求む。

14 :Be名無しさん:03/02/27 14:32
Unilinwinmacbex
http://pc.2ch.net/test/read.cgi/os/989371029/

15 :ITRON名無しさん ◆4WD27e3i1o :03/02/27 15:16
>>1 あらまお帰り。受験終わったのかい?

16 :Be名無しさん:03/02/27 15:18
どー見てもAさんか夜さんだな。

17 :Be名無しさん:03/02/27 15:19
Aさんだったら楽しみだな…

18 :Be名無しさん:03/02/27 15:19
>>15
Aさんか。

19 :Be名無しさん:03/02/27 15:25
ということは大学受かったということだよな。おめでとう!

20 :( ´ -`):03/02/27 17:07
いえ、わたしはACではないハズです。
彼は昨日本郷で名誉の戦死を遂げられました。
ご冥福をお祈りします。合唱。

21 :Be名無しさん:03/02/27 17:23

坂研狙ってたのか…勇者だな。

22 :( ´ -`):03/02/27 22:40
プロセス起動まであと一歩。
24時間以内にはユーザモードでプロセスを起動させたかったんだが残念。
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030227.tar.gz

>>21
そういうわけではないそうです。
TRONにはもうあまり興味が無いと言っておりました。

>>14
クソスレあげんなやボゲェが。

23 :( ´ -`):03/02/28 02:54
ページングをオンにしてみた。
後はプロセス固有空間にメモリを割り当てELFを読込むだけ。
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030227-2.tar.gz

24 : :03/02/28 04:30
     ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ( ´∀`)/<先生!こんなのがありました!
 _ / /   /   \___________
\⊂ノ ̄ ̄ ̄ ̄\
 ||\        \
 ||\|| ̄ ̄ ̄ ̄ ̄||
 ||  || ̄ ̄ ̄ ̄ ̄||
http://saitama.gasuki.com/saitama/

25 :Be名無しさん:03/02/28 10:53
こんなもんだれかDLするとおもってんのか
おめでてーな
といってあげてやる

26 :名無したん@お嬢:03/02/28 11:24
>>1さん
ボクは応援してるyo ガンガレ!!

/join #osdev-j


27 :( ´ -`):03/02/28 14:16
>>25
たしかにDLするやつはあんまりいないだろうな。
少なくとも今までのどの「2ch発OS」より良く出来てるが、
いかんせん地味だからな。まぁ、それは仕方ないことだ。

>>26
ありがとー

28 :Be名無しさん:03/02/28 15:30
/*** NoName\include\sys\aspace.h ***/

#ifndef_ese_sys_aspace_h_
#define_ese_sys_aspace_h_

#definePageSize4096
#defineKernelAddressMin0x00000000
#defineKernelAddressMax0x7fffffff
#defineUserAddressMin0x80000000
#defineUserAddressMax0xffffffff
#defineASpaceProtUser0x1
#defineASpaceProtKernel0x2
#defineASpaceProtWrite0x3

struct _PageEntry {
unsigned intp:1;
unsigned intrw:1;
unsigned intus:1;
unsigned intpwt:1;
unsigned intpcd:1;
unsigned inta:1;
unsigned intd:1;
unsigned intps:1;
unsigned intg:1;
unsigned intuser:3;
unsigned intbase:20;
};

29 :Be名無しさん:03/02/28 15:31
/*** NoName\include\sys\aspace.h ***/

extern void aspace_initialize(void);
extern PageEntry *aspace_create(void);
extern int aspace_delete(PageEntry *page_table);
extern int aspace_map(PageEntry *page_table, unsigned int address, unsigned int size, char prot);
extern int aspace_unmap(PageEntry *page_table, unsigned int address, unsigned int size);
extern int aspace_read(PageEntry *page_table, unsigned int addr, void *buf, unsigned int size);
extern int aspace_write(PageEntry *page_table, unsigned int address, void *buf, unsigned int size);
extern int aspace_zero(PageEntry *page_table, unsigned int addr, unsigned int size);

#endif_ese_sys_aspace_h_

30 :Be名無しさん:03/02/28 15:32
/*** NoName\include\sys\core.h ***/
#ifndef_ese_sys_core_h_
#define_ese_sys_core_h_

extern void lock_cpu(void);
extern void unlock_cpu(void);
extern void dispatch(void);
extern void exit_and_dispatch(void);
extern void task_startup(void);
extern void syscall_entry(void);
extern void exception0_entry(void);
extern void exception1_entry(void);
extern void exception2_entry(void);
extern void exception3_entry(void);
extern void exception4_entry(void);
extern void exception5_entry(void);
extern void exception6_entry(void);

31 :Be名無しさん:03/02/28 15:33
/*** NoName\include\sys\core.h ***/

extern void exception7_entry(void);
extern void exception8_entry(void);
extern void exception9_entry(void);
extern void exception10_entry(void);
extern void exception11_entry(void);
extern void exception12_entry(void);
extern void exception13_entry(void);
extern void exception14_entry(void);
extern void exception15_entry(void);
extern void exception16_entry(void);
extern void exception17_entry(void);
extern void exception18_entry(void);
extern void exception19_entry(void);

#endif_ese_sys_core_h_


32 :Be名無しさん:03/02/28 15:34
/*** NoName\include\sys\cpu.h ***/

#ifndef_ese_sys_cpu_h_
#define_ese_sys_cpu_h_

#defineTYPE_SEG_DATA0x00/* 0000データセグメント */
#defineTYPE_SEG_EXPAND0x04/* 0100 エクスパンドダウン */
#defineTYPE_SEG_WRITEABLE0x02/* 0010 書き込み可 */
#defineTYPE_SEG_ACCESSED0x01/* 0001 アクセスされたか? */
#defineTYPE_SEG_CODE0x08/* 1000 コードセグメント */
#defineTYPE_SEG_CONFORMING0x04/* 0100 コンフォーミング */
#defineTYPE_SEG_READABLE0x02/* 0010 読み取り可 */
#defineTYPE_SEG_ACCESSED0x01/* 0001 アクセスされたか? */

#defineTYPE_GATE_INTR0xe
#defineTYPE_GATE_TRAP0xf

33 :Be名無しさん:03/02/28 15:35
/*** NoName\include\sys\cpu.h ***/

typedef struct {
unsignedlimit_L:16;
unsignedbase_L:24 __attribute__ ((packed));
unsignedtype:4;
unsigneds:1;
unsigneddpl:2;
unsignedp:1;
unsignedlimit_H:4;
unsignedavl:1;
unsignedx:1;
unsigneddb:1;
unsignedg:1;
unsignedbase_H:8;
} SegDesc;

34 :Be名無しさん:03/02/28 15:36
/*** NoName\include\sys\cpu.h ***/

typedef struct {
unsignedoffset_L:16;
unsignedselector:16;
unsignedcopy:8;
unsignedtype:4;
unsigneds:1;
unsigneddpl:2;
unsignedp:1;
unsignedoffset_H:16;
} GateDesc;

typedefstruct {
unsignedlimit:16;
unsignedbase:32 __attribute__ ((packed));
} DescPtr;

35 :Be名無しさん:03/02/28 15:37
/*** NoName\include\sys\cpu.h ***/

typedef struct {
unsignedlink;
unsignedesp0;
unsignedss0;
unsignedesp1;
unsignedss1;
unsignedesp2;
unsignedss2;
unsignedcr3;
unsignedeip;
unsignedeflags;
unsignedeax;
unsignedecx;
unsignededx;
unsignedebx;
unsignedesp;
unsignedebp;
unsignedesi;
unsignededi;
unsignedes;
unsignedcs;
unsignedss;
unsignedds;
unsignedfs;
unsignedgs;
unsignedldt;
unsignediobase;
} TSS;

36 :Be名無しさん:03/02/28 15:37
/*** NoName\include\sys\cpu.h ***/

extern void make_seg_desc(SegDesc *desc, unsigned int addr, unsigned int limit, char type, char dpl);
extern void make_gate_desc(GateDesc *desc, int selector, void *entry, char type, char dpl);
extern void make_tss_desc(SegDesc *desc, unsigned int addr, unsigned int limit, char dpl);
extern void make_desc_ptr(DescPtr *ptr, unsigned int limit, void *base);
extern void cpu_initialize(void);

#endif_ese_sys_cpu_h_

37 :Be名無しさん:03/02/28 15:39
/*** NoName\include\sys\elf.h ***/

#ifndef_elf_h_
#define_elf_h_


#defineEI_MAG00
#defineEI_MAG11
#defineEI_MAG22
#defineEI_MAG33
#defineEI_CLASS4
#defineEI_DATA5
#defineEI_VERSION6
#defineEI_PAD7
#defineEI_BRAND8
#defineEI_NIDENT16

#defineELFMAG00x7f
#defineELFMAG1'E'
#defineELFMAG2'L'
#defineELFMAG3'F'

38 :Be名無しさん:03/02/28 15:39
/*** NoName\include\sys\elf.h ***/

#defineIS_ELF(ehdr)((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
(ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
(ehdr).e_ident[EI_MAG2] == ELFMAG2 && \
(ehdr).e_ident[EI_MAG3] == ELFMAG3)


typedefunsigned intElf32_Addr;
typedefunsigned shortElf32_Half;
typedefunsigned intElf32_Off;
typedefunsigned intElf32_Sword;
typedefunsigned intElf32_Word;
typedefunsigned intElf32_Size;


39 :Be名無しさん:03/02/28 15:40
/*** NoName\include\sys\elf.h ***/


typedef struct {
unsigned chare_ident[EI_NIDENT];
Elf32_Halfe_type;
Elf32_Halfe_machine;
Elf32_Worde_version;
Elf32_Addre_entry;
Elf32_Offe_phoff;
Elf32_Offe_shoff;
Elf32_Worde_flags;
Elf32_Halfe_ehsize;
Elf32_Halfe_phentsize;
Elf32_Halfe_phnum;
Elf32_Halfe_shentsize;
Elf32_Halfe_shnum;
Elf32_Halfe_shstrndx;
} ELF_Header;


40 :Be名無しさん:03/02/28 15:40
/*** NoName\include\sys\elf.h ***/

typedef struct {
Elf32_Wordsh_name;
Elf32_Wordsh_type;
Elf32_Wordsh_flags;
Elf32_Addrsh_addr;
Elf32_Offsh_offset;
Elf32_Sizesh_size;
Elf32_Wordsh_link;
Elf32_Wordsh_info;
Elf32_Sizesh_addralign;
Elf32_Sizesh_entsize;
} ELF_SHeader;


41 :Be名無しさん:03/02/28 15:41
/*** NoName\include\sys\elf.h ***/

typedef struct {
Elf32_Wordp_type;
Elf32_Offp_offset;
Elf32_Addrp_vaddr;
Elf32_Addrp_paddr;
Elf32_Sizep_filesz;
Elf32_Sizep_memsz;
Elf32_Wordp_flags;
Elf32_Sizep_align;
} ELF_PHeader;


#endif/* _elf_h_ */

42 :Be名無しさん:03/02/28 15:42
/*** NoName\include\sys\kernel.h ***/

#ifndef_ese_sys_kernel_h_
#define_ese_sys_kernel_h_

#include <sys/typedef.h>
#include <sys/task.h>
#include <sys/memory.h>
#include <sys/aspace.h>
#include <sys/core.h>
#include <sys/cpu.h>
#include <sys/util.h>

#endif_ese_sys_kernel_h_


43 :Be名無しさん:03/02/28 15:42
/*** NoName\include\sys\memory.h ***/

#ifndef_ese_sys_memory_h_
#define_ese_sys_memory_h_

extern unsigned int memory_upper;
extern unsigned int num_free_page;
extern void memory_initialize(unsigned int upper);
extern void reserve_memory(unsigned int start, unsigned int size);
extern void *alloc_page(void);
extern void free_page(void *page);
extern sys_grow_heap(Task *self, int size);

#endif_ese_sys_memory_h_



44 :Be名無しさん:03/02/28 15:44
/*** NoName\include\sys\multiboot.h ***/

/* multiboot.h - the header for Multiboot */
/* Copyright (C) 1999 Free Software Foundation, Inc.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */

45 :Be名無しさん:03/02/28 15:44
/*** NoName\include\sys\multiboot.h ***/

/* Macros. */

/* The magic number for the Multiboot header. */
#define MULTIBOOT_HEADER_MAGIC0x1BADB002

/* The flags for the Multiboot header. */
#define MULTIBOOT_HEADER_FLAGS0x00010003

/* The magic number passed by a Multiboot-compliant boot loader. */
#define MULTIBOOT_BOOTLOADER_MAGIC0x2BADB002

/* The size of our stack (16KB). */
#define STACK_SIZE0x4000

/* C symbol format. HAVE_ASM_USCORE is defined by configure. */
#ifdef HAVE_ASM_USCORE
# define EXT_C(sym)_ ## sym
#else
# define EXT_C(sym)sym
#endif

46 :Be名無しさん:03/02/28 15:45
/*** NoName\include\sys\multiboot.h ***/

#ifndef ASM
/* Do not include here in boot.S. */

/* Types. */

/* The Multiboot header. */
typedef struct multiboot_header
{
unsigned long magic;
unsigned long flags;
unsigned long checksum;
unsigned long header_addr;
unsigned long load_addr;
unsigned long load_end_addr;
unsigned long bss_end_addr;
unsigned long entry_addr;
} multiboot_header_t;

47 :Be名無しさん:03/02/28 15:45
/*** NoName\include\sys\multiboot.h ***/

/* The symbol table for a.out. */
typedef struct aout_symbol_table
{
unsigned long tabsize;
unsigned long strsize;
unsigned long addr;
unsigned long reserved;
} aout_symbol_table_t;

/* The section header table for ELF. */
typedef struct elf_section_header_table
{
unsigned long num;
unsigned long size;
unsigned long addr;
unsigned long shndx;
} elf_section_header_table_t;

48 :Be名無しさん:03/02/28 15:46
/*** NoName\include\sys\multiboot.h ***/

/* The Multiboot information. */
typedef struct multiboot_info
{
unsigned long flags;
unsigned long mem_lower;
unsigned long mem_upper;
unsigned long boot_device;
unsigned long cmdline;
unsigned long mods_count;
unsigned long mods_addr;
union
{
aout_symbol_table_t aout_sym;
elf_section_header_table_t elf_sec;
} u;
unsigned long mmap_length;
unsigned long mmap_addr;
} multiboot_info_t;

/* The module structure. */
typedef struct module
{
unsigned long mod_start;
unsigned long mod_end;
unsigned long string;
unsigned long reserved;
} module_t;

49 :Be名無しさん:03/02/28 15:46
/*** NoName\include\sys\multiboot.h ***/

/* The memory map. Be careful that the offset 0 is base_addr_low
but no size. */
typedef struct memory_map
{
unsigned long size;
unsigned long base_addr_low;
unsigned long base_addr_high;
unsigned long length_low;
unsigned long length_high;
unsigned long type;
} memory_map_t;

#endif /* ! ASM */

50 :Be名無しさん:03/02/28 15:48
/*** NoName\include\sys\queue.h ***/

/*
* TOPPERS/JSP Kernel
* Toyohashi Open Platform for Embedded Real-Time Systems/
* Just Standard Profile Kernel
*
* Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
* Toyohashi Univ. of Technology, JAPAN
*
* 上記著作権者は,以下の条件を満たす場合に限り,本ソフトウェア(本ソ
* フトウェアを改変したものを含む.以下同じ)を使用・複製・改変・再配
* 布(以下,利用と呼ぶ)することを無償で許諾する.
* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
* 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
* スコード中に含まれていること.
* (2) 本ソフトウェアをバイナリコードの形または機器に組み込んだ形で利
* 用する場合には,次のいずれかの条件を満たすこと.
* (a) 利用に伴うドキュメント(利用者マニュアルなど)に,上記の著作
* 権表示,この利用条件および下記の無保証規定を掲載すること.
* (b) 利用の形態を,別に定める方法によって,上記著作権者に報告する
* こと.
* (3) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
* 害からも,上記著作権者を免責すること.
*
* 本ソフトウェアは,無保証で提供されているものである.上記著作権者は,
* 本ソフトウェアに関して,その適用可能性も含めて,いかなる保証も行わ
* ない.また,本ソフトウェアの利用により直接的または間接的に生じたい
* かなる損害に関しても,その責任を負わない.
*
* @(#) $Id: queue.h,v 1.1 2000/11/14 14:44:21 hiro Exp $
*/

51 :Be名無しさん:03/02/28 15:49
/*** NoName\include\sys\queue.h ***/

/*
*キュー操作ライブラリ
*
* このキュー操作ライブラリでは,キューヘッダを含むリング構造のダブル
* リンクキューを扱う.具体的には,キューヘッダの次エントリはキューの
* 先頭のエントリ,前エントリはキューの末尾のエントリとする.また,キ
* ューの先頭のエントリの前エントリと,キューの末尾のエントリの次エン
* トリは,キューヘッダとする.空のキューは,次エントリ,前エントリと
* も自分自身を指すキューヘッダであらわす.
*/

#ifndef_QUEUE_H_
#define_QUEUE_H_

/*
* キューのデータ構造の定義
*/
typedef struct queue {
struct queue *next;/* 次エントリへのポインタ */
struct queue *prev;/* 前エントリへのポインタ */
} QUEUE;

52 :Be名無しさん:03/02/28 15:49
/*** NoName\include\sys\queue.h ***/

/*
* キューの初期化
*
* queue にはキューヘッダを指定する.
*/
Inline void
queue_initialize(QUEUE *queue)
{
queue->prev = queue->next = queue;
}

/*
* キューの前エントリへの挿入
*
* queue の前に entry を挿入する.queue にキューヘッダを指定した場合
* には,キューの末尾に entry を挿入することになる.
*/
Inline void
queue_insert_prev(QUEUE *queue, QUEUE *entry)
{
entry->prev = queue->prev;
entry->next = queue;
queue->prev->next = entry;
queue->prev = entry;
}

53 :Be名無しさん:03/02/28 15:50
/*** NoName\include\sys\queue.h ***/

/*
* エントリの削除
*
* entry をキューから削除する.
*/
Inline void
queue_delete(QUEUE *entry)
{
entry->prev->next = entry->next;
entry->next->prev = entry->prev;
}

/*
* キューの次エントリの取出し
*
* queue の次エントリをキューから削除し,削除したエントリを返す.queue
* にキューヘッダを指定した場合には,キューの先頭のエントリを取り出す
* ことになる.queue に空のキューを指定して呼び出してはならない.
*/

54 :Be名無しさん:03/02/28 15:50
/*** NoName\include\sys\queue.h ***/

Inline QUEUE *
queue_delete_next(QUEUE *queue)
{
QUEUE*entry;

//assert(queue->next != queue);
entry = queue->next;
queue->next = entry->next;
entry->next->prev = queue;
return(entry);
}

/*
* キューが空かどうかのチェック
*
* queue にはキューヘッダを指定する.
*/
Inline BOOL
queue_empty(QUEUE *queue)
{
if (queue->next == queue) {
//assert(queue->prev == queue);
return(TRUE);
}
return(FALSE);
}

#endif /* _QUEUE_H_ */

55 :Be名無しさん:03/02/28 15:51
/*** NoName\include\sys\task.h ***/

#ifndef_ese_sys_task_h_
#define_ese_sys_task_h_

#include <sys/queue.h>

#defineNumTask16

#defineTaskKernelStackSize(8*1024)
#defineTaskUserStackSize(256*1024)

#defineTaskStateNonExist0
#defineTaskStateReady1
#defineTaskStateWait2
#defineTaskStateActive4

#defineKernelCode0x8
#defineKernelData0x10
#defineUserCode(0x18 | 3)
#defineUserData(0x20 | 3)

56 :Be名無しさん:03/02/28 15:52
/*** NoName\include\sys\task.h ***/

struct _Task {
QUEUEqueue;
Context*context;
charkernel_stack[TaskKernelStackSize];
unsigned intuser_stack;
intid;
intstate;
PageEntry*page_table;
intheap;
intheap_min;
intheap_max;
};

struct _Context {
intcr3;
intedi;
intesi;
intebp;
intesp;
intebx;
intedx;
intecx;
inteax;
inteip;
};

57 :Be名無しさん:03/02/28 15:52
/*** NoName\include\sys\task.h ***/

struct _StackFrame {
intes;
intds;
intedi;
intesi;
intebp;
intesp2;
intebx;
intedx;
intecx;
inteax;
interr;
inteip;
intcs;
inteflag;
intesp;
intss;
};

extern Task *active_task;
extern Task *next_task;
extern Task *idol_task;
extern void task_initialize(void);
extern Task *schedule(void);
extern sys_create_task(Task *self, char *path);

#endif_ese_sys_task_h_


58 :Be名無しさん:03/02/28 15:53
/*** NoName\include\sys\typedef.h ***/
#ifndef_ese_sys_typedef_h_
#define_ese_sys_typedef_h_

#defineNULL(0)
#defineTRUE1
#defineFALSE0
#defineInlinestatic __inline__

typedefintBOOL;
typedefunsigned charbyte;
typedefunsigned shortword;
typedefunsigned intdword;

typedef struct _Task Task;
typedef struct _Context Context;
typedef struct _StackFrame StackFrame;
typedef struct _PageEntry PageEntry;

#endif_ese_sys_typedef_h_


59 :Be名無しさん:03/02/28 15:54
/*** NoName\include\sys\util.h ***/

#ifndef_ese_sys_util_h_
#define_ese_sys_util_h_

#defineROUNDUP(x, align)((((unsigned long)x) + (align) - 1) & ~((align) - 1))
#define CUTDOWN(x, align)(((unsigned long)x) / ((unsigned long)align) * ((unsigned long)align))

int strcmp(const char *s1, const char *s2);
char *strcpy(char *dst, const char *src);
void *memcpy(void *dst, const void *src, unsigned int len);
void *memset(void *b, int c, unsigned int len);

void printf_initialize(void);
void printf (const char *format, ...);
void panic(const char *msg);

#endif_ese_sys_util_h_


60 :Be名無しさん:03/02/28 15:55
ここまでNoName\include\sys終了。

61 :Be名無しさん:03/02/28 15:59
ソースに興味が出てきたヤシは >>23 のリンク先をどうぞ。

62 :名無したん@お嬢:03/02/28 16:08
荒らすならもっとおもろいの考えろやデブヲタヒッキーども

63 :Be名無しさん:03/02/28 16:33
↓↓↓↓↓★ココだ★↓↓↓↓↓
http://www.pink-angel.jp/betu/linkvp/linkvp.html

64 :Be名無しさん:03/02/28 16:54
頑張れよ〜 > 1

65 :LightCone ◆sSJBc30S5w :03/02/28 17:56
>>22
>プロセス起動まであと一歩。
>24時間以内にはユーザモードでプロセスを起動させたかったんだが残念。

>>23
>ページングをオンにしてみた。
>後はプロセス固有空間にメモリを割り当てELFを読込むだけ。

ファイルからどうやって読むんですか?
ファイルシステムは? FDD/HDD からのドライバは?

「ページングをオンに」して、ページテーブルは作ってますか?

66 :どっかの人:03/02/28 18:55
>>65
なにが気に食わないのか。
へんな人…。


#荒らしを放置できなかった自分に反省します。
#以上、消えます

67 :Be名無しさん:03/02/28 19:06
NoName pagin oncreate init taskkore dake sika denaikedo iino?

68 :FreeDOS教徒:03/02/28 19:06
ソースがOSらしくて(・∀・)イイ!!
開発速くて(゚д゚)ウラヤマスィ...

69 :( ´ -`):03/02/28 21:16
ELFについて調査中。

>>61
大量コピペは( ゚Д゚)ゴルァ

>>65
>ファイルからどうやって読むんですか?

GRUBにカーネルとは別にモジュールをロードする機能があるので、
ファイルシステムが出来るまではそれを使います。

>「ページングをオンに」して、ページテーブルは作ってますか?
CR3をセットしてない状態でもPGフラグをオンに出来るのでしょうか?

>>67
正常な動作です。まだ開発初期なのでデバッグプリントしか表示出来できません。
そのうちMGLか何かでも移植すると面白くなるかも。

>>68
>開発速くて(゚д゚)ウラヤマスィ...
今のところ昔書いたコードからコピペしてるからです。
多分デバドラとファイルシステムに入ったら速度落ちます。

70 :どっかの人:03/02/28 21:58
ま、ともかくがんばってね。

71 :Be名無しさん:03/02/28 21:59
OSKitとかってのは使えないの?

72 :( ´ -`):03/03/01 01:28
プロセスの起動を試してるんだがお約束通りリセットがかかって上手く行かない。
もうちょっとちゃんと作らないとダメかな。
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030228.tar.gz

>>70
また〜りがんばります。

>>71
OSKit使えば凄いのが速攻で作れますが、
今回は一から作ってみたかったんです。

73 :Be名無しさん:03/03/01 03:47
>>72
bochs つかってみたら?gdbと連携すると超強力。拍子抜けするくらい。

74 :Be名無しさん:03/03/01 06:55
趣味でエロサンプルムービー専門のサイトはじめました。
http://homepage3.nifty.com/digikei/sample/sample.html
気合入れてどんどん更新していきます

75 :Be名無しさん:03/03/01 11:44
>>74
MESばっかりじゃない?

76 :Be名無しさん:03/03/01 14:03
age.sf.jpに登録したら?

77 :( ´ -`):03/03/01 16:03
>>73
P120のマシンを使ってるのできついです。plex86の方が早いらしいのですが、
デバッグをサポートする機能があるのかどうかわかりません。
一応二つとも試してみます。

>>76
う〜ん、今の段階ではあまりにもヘボすぎて登録するには気が引けます。

78 :Be名無しさん:03/03/01 18:42
>>77
まだ、起動に何秒もかかる代物じゃないんでしょ?
バグが取れるならエミュレータで5分とかかかっても構わない気がするけど。
実際そんなにかからないだろうし。

79 :( ´ -`):03/03/01 23:12
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030301.tar.gz
プロセスが起動。むちゃくちゃアホなミスでした。
一生懸命プロセスのコンテキストやスタックフレームを作ったのは良いけど、
プロセス構造体に入れとくのを忘れてました。どうりで動かないはずです。
プログラマ失格というより人間失格ですな。逝ってきます。

>>78
言われてみればそのとおりですね。
Bochs&GDB使って見ましたがかなり強力でした。
願わくばもうちょっとマシなマシンなら開発効率も上がるのですが。

さて、これからどんどんシステムコールを実装していくつもりなのでお楽しみに。

80 :YAHOO!を無料で使用する方法!!!:03/03/01 23:25
**** YAHOO!BBのユーザーへの特報!!! ****

今YAHOO!BBでADSLを利用されてる方。

月額料金を無料にできる方法をお教えします。確実な方法です
し方法も一つではなく何通りお教えしますので、ヤフーbbのユ
ーザーである限り料金発生なくずっと使えます。
もう、2ちゃんねるを見た何人かのラッキーな方がすでに無料
で使用して頂いております。


興味のある方は以下のメールアドレスに連絡ください。
料金をとめる方法を少しの謝礼でお教えします。

ryoukinn5000@yahoo.co.jp ryoukinn2003@yahoo.co.jp
 よろしくお願いします。

81 :( ´ -`):03/03/02 04:14
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030301-2.tar.gz
システムコールの経路を確保。
これでユーザプロセスからばんばんシステムコールを呼び出せます。
今のところinitプロセスはこんな感じ。get_task_id()がシステムコール。
あとprintf()の中でもputch()という一文字出力するシステムコールを呼んでいます。

#include "syscall.h"
#include "util.h"

int main(void)
{
int id = get_task_id();
printf("init task id = %d\n", id);
while(1);

return 0;
}

82 :( ´ -`):03/03/02 04:15
明日はPITを使えるようにする予定。そのためにはIRQ周りをなんとかせねば。
そしてそれが終ればラウンドロビンでスケジューリング出来るハズ。
だんだんOSらしくなってきました。今が一番楽しい時期かもしれません。

83 :Be名無しさん:03/03/02 09:23
オナニースレ

84 :Be名無しさん:03/03/02 09:28
>>83
黙っとれ。

>>82
sage進行の方がいいんじゃないか?

85 :Be名無しさん:03/03/02 12:32
そろそろ名前をつけてくれぃ

86 :Be名無しさん:03/03/02 12:35
ひそかに期待・・・

87 :Be名無しさん:03/03/02 13:14
L様の覚え書き
http://pc2.2ch.net/test/read.cgi/tech/1042375466/530

88 :( ´ -`):03/03/02 16:02
>>84
そうします。

>>85
取り敢えずgikoというのはどうでしょうか?

>>86
ありがとうございます。
気が変わってGUIの実装もしようかなと思っているので、
当初考えていたより結構面白くなるかもしれません。

89 :Be名無しさん:03/03/02 16:48
OS作ったら神!GUIについては
WindowsとかマックとかLinuxとかは、いかにデスクトップをゴテゴテに
するかを競っているかのように見えるが、それが終わったらどこへ向かうんだろう。
ある程度パソコンがわかるようになると途端にやることがなくなるよね。
パソコンって。自分だけかもしれないけどいかにシンプルでわかりやすい
インターフェイスにするかってのを目指してほしいです。

90 :Be名無しさん ◆g2j80BX5do :03/03/02 18:36
ライセンスの取り扱いはGPLでよろしいですか?


91 :( ´ -`):03/03/02 20:31
>>89
environmentという意味でのOSを新しく作れたら神でしょうね。
MacとかTRONとか、あとUNIXなんかを作った人達は本当に神だと思います。
一方私なんかはせいぜいUNIXをパクったカーネルを書く程度です。
でも、いつかは神になりたいです(w

GUIについては、そうですね、出来るだけシンプルかつ柔軟性に富み強力な
ものが理想なのですが、そうすると全く新規に創造しなければいけなくなっ
て大変ですから、今回はまずは何か既存のシンプルなものを移植するところ
から始めたいと思います。

>>90
私が書いた部分に関してはPDSです。
kernel/printf.cとかinclude/sys/queue.hは他から流用したものなので
それぞれのソースファイルの先頭に書いてあるライセンスが適用されます。
printf.cだとGPL。queue.hだとTOPPERSスタイルライセンスですね。

92 :Be名無しさん:03/03/02 20:44
なんか2ch見てると
OSのでき = GUIのでき
みたいな書き込みが散見されるんだけど

アプリからは画面モード切替とフレームバッファのポインタさえ取得できれば十分な場合が多い
ゲームなんかだと自力描画で独自GUIを実装するほうがフツーだとおもう。

widget setなどいわゆる「GUI」がほしけりゃ、microswindowsやらPicoGUIやらDJGPP用各種ライブラリやら
ライブラリレベルでどーにでもなる

...というのはOSがグラフィックを管理してくれなかったDOS時代のジジイの世迷いごとでしょうか。

93 :Be名無しさん:03/03/02 23:22
>>92
>OSのでき = GUIのでき
>みたいな書き込みが散見されるんだけど

そういう観点で評価され、中身がクソでも大ブレイクしたのが
初期のMacOSやWin95ですからね。重要なんでしょう。
ユーザーの観点から見るとそうなる。

業務で使うときなど、OSがGUIを縛ることで、DOSの頃に比べ色々な
アプリの操作性の統一が進んで使い方の習熟や「覚えていられるか」が
楽になったのが非常にありがたい。(人件費コスト等)

#半年さわらないと使い方初心者に戻されてしまうMARKとかSTAR-CDは、、、

94 :Be名無しさん:03/03/03 02:41
仮に0からOSを作る場合、POSIXとかの制約なしで、変えた方が便利な部分はなんだろう?

95 :( ´ -`):03/03/03 07:04
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030302.tar.gz
デバッグに手間取って遅くなってしまいましたが一応タイマを実装しました。
それとタスク(NoNameではプロセスのことをタスクと言います)を終了する
システムコールも動くようになりました。次はキーボードドライバを実装する予定です。

96 :LightCone ◆sSJBc30S5w :03/03/03 17:31
一言コメントしたいのは、このソースは非常に綺麗だ、ということです。

特にそう思ったのは、core.S の dispatch ルーチンの単純さです。

今後もこの調子で成長できるのであれば素晴らしいですね。

97 :LightCone ◆sSJBc30S5w :03/03/03 17:49
このソースで、"QUEUE"の部分は面白いです。

普通、リストやキューを使いたいときは、リストクラスの方が
「核となるデータを取り込む」か「核となるデータのポインタを持つ」
のが一般的だと思うのですが、このソースだと、逆さまに核となるデータ
の一部(メンバ)に、キューの前後リンクポインタを持たせてしまってる
んですね。単純だけど、面白いやり方ですね。

もしかして、私が常識知らずナだけで、一般に良く使われていたり?

98 :LightCone ◆sSJBc30S5w :03/03/03 18:53
 Windowsプログラムを流行出した頃から、本屋でよく見かけるC/C++プログラ
ム中の関数名や変数名が、単語の区切りを大文字にする命名規則に従うものが
多くなった。

 しかし、Cの伝統的なスタイルは、恐らく単語をアンダースコアで区切る
ものだった(しかも省略形も多かった)。

 聞いた話によると、「小文字の名前」は全く理由はわからないが、
人間には「見やすい」らしく、C言語が持てはやされた理由の一つだと
も言われているらしい。

 ちなみにこのソース、ほとんど小文字のアンダースコアスタイルが
用いられているが、単純に見やすく思う。ローカル変数や引数はやはり全部
小文字がいいのだろうか?

99 :超先生@マブラヴ100円 ◆leaf/RYZgY :03/03/03 18:59
struct Hoge
{
 int huga;
 Hoge *next,*prev;
};

Hoge* list_head = NULL;

<後ろ頭>y-~~ のようにやるのは定石のような。

100 :Be名無しさん:03/03/03 19:03
予定として、シェルがうごくのはいつごろ?
まずはお約束としてbashとgccね。


101 :LightCone ◆sSJBc30S5w :03/03/03 19:03
>>99
それとは違います。

struct QUEUE {
QUEUE *prev;
QUEUE *next;
};

struct MySomeData {
char name[16];
int age;
QUEUE queue;
};

見たいな感じで、キューを操作するときは、queue メンバに対して
独立ライブラリでやってるのが面白く思うんです。

102 :Be名無しさん:03/03/03 19:06
>>96-98
褒め称えといて、後で叩くつもりでしょ。

103 :LightCone ◆sSJBc30S5w :03/03/03 19:07
task.h の task 構造体を見てみて下さい。

(#101のMySomeDataは間違いで、QUEUEメンバは、先頭にあります。)

104 :LightCone ◆sSJBc30S5w :03/03/03 19:08
>>102
今まで、誰も叩いた事は無いです。
単に技術的な乾燥を率直に言っただけです。

この人の場合、技術的に優れているので、誉める所しかないだけの
話です。

105 :超先生@マブラヴ100円 ◆leaf/RYZgY :03/03/03 19:20
<後ろ頭>y-~~ winnt.hのLIST_ENTRYと全く同じですね。

106 :Be名無しさん:03/03/03 19:40
>>102
いい感じで話が進んでるんだから余計なこといわんでよろしい。

107 :Be名無しさん:03/03/03 19:40
( ´ -`)さんはLinuxの人?それともBSD系?

108 :Be名無しさん:03/03/03 20:08
Gikoのビルドができませんヨ@MinGW

109 :Be名無しさん:03/03/03 20:15
>>108
ELFが吐けないと駄目じゃないかな。

110 :108:03/03/03 21:02
>>109
そうっぽい。あとfd/kernel触れないとブートすらできない

111 :Be名無しさん:03/03/03 21:13
>>97
よくつかわれてまつ。お約束でつ。コレはToppers由来のようでつがBSDでも(たぶんlinuxでも)同様でつ
メンバが先頭にあるのもお約束でつ。
もれはC++よくしんないけど、こーゆーの「侵入型」っていうんでちたかね?

112 :LightCone ◆sSJBc30S5w :03/03/03 21:16
アルゴリズムやデータ構造って、勉強しないと、どんどん先に進んでるような
感じがします。イタタ

113 :Be名無しさん:03/03/03 21:25
>>100
gccはともかくbashはきついんじゃないでしょうかね。
cursesとfork&execに依存してるので、そういう機能を実装するか、依存部を分離する必要がある。
unix互換を目指さないんだったら不毛な作業だ。

114 :Be名無しさん:03/03/03 21:45
>>94
DOSあがりのもれ的にはposix系のfork&execつーのが激しく疑問。
ほとんどの場合、fork&execで別プロセスイメージを実行することの方が多いはず。
forkで同一プロセスのコピーが役に立つのは一部のサーバだけで、そっちのほうが特殊ケースだと思う。
MMUありだとCOWマップの作り直しだけでいいとはいえ、ソレすら無駄。

vforkなんか作るくらいならspawn系を作れと小一時間(略)



115 :Be名無しさん:03/03/03 21:53
>>113
正確にはbash->readline->curses

116 :( ´ -`):03/03/03 22:36
おおっ、LightCone氏に誉められるなんて!!
なんだかむちゃくちゃやる気が出てきました。

>>107
BSD系です。メインの開発環境はFreeBSDを使っていますし、
普段OSの実装で疑問が出たら*BSDのコードを参照しています。
ただし、今回は出来るだけ他のOSのコードは見ないようにしています。
その方が面白いから。

>>110
>そうっぽい。あとfd/kernel触れないとブートすらできない
開発環境としてPC上の*BSDとLinuxを暗黙の前提にしていますので、
やっぱりMinGWでは難しいでしょうね。ブートはGRUBまかせなので、
たぶんFATからでもHDからでもブート出来ます。

>>100
>>113
当初の予定では独自APIで行く予定でしたが、結局のところ機能はUNIXと似たり寄ったりで、
名前だけが違うようなAPIが乱立するだけで、あんまり意味が無いような気がしてきています。
良く考えてみれば、カーネルの内部構造が同じなわけですから、これは当然の事です。
ここは素直にUNIXチックなのを目指そうかなと考えています。MacOSXやBeOS(本当はUNIXでは
ないけど)の例からもカーネルのAPIがUNIXチックであっても十分に独自色は出せるでしょうから。

で、gccとかのGNUツールが動くまでの期間ですが、プロセス管理とメモリ管理については
現状でも粗削りながら動いていますので、あとはデバドラとファイルシステムにどれだけ
かかるか次第でしょう。この辺は経験が無いので実際に作ってみないと何ともいえません
が、根拠無しの希望的観測では2〜3ヶ月くらいかなと思っています。

117 :Be名無しさん:03/03/03 23:11
>>116
正直、gikoは止めてほしい。
NoNameって名前かっこよくない? 名無しってことでしょ?
もしくはOS名は後からでもいいんじゃ?
プロジェクト名を決めてその中でOS名を決めるとか。
もちろん、プロジェクト名がOS名になってもいいし。
#勝手な意見でスマソ。テクがないゆえ・・・。


118 :Be名無しさん:03/03/03 23:15
マターリどうぞ( ´∀`)
http://minix-up.sourceforge.jp/cgi-bin/l.cgi/l/no/NoName/

119 :Be名無しさん:03/03/03 23:24
>>117
ちょっと変形して海底二万里の「ネモ」とかどう?
たしか、名無しって意味だったとおもうけど。(単行本を手放したので確認不能だけど)

120 :Be名無しさん:03/03/03 23:44
>>119
確かそうだったと思う。

121 :( ´ -`):03/03/04 00:48
タスク生成のシステムコールの実装を見直し中。
今の実装では新しいタスクのアドレス空間の構築や実行ファイルの読込みは、
生成元のタスクがやっていますが、これだと生成元のタスクは自分のとは別
のアドレス空間にアクセスしなければならず面倒なので、これを新しいタス
ク自身に全部やらせるようにするつもりです。これはfork&exec実装への布石
でもあり、これ自身spawn系のシステムコールのサポートでもあります。

>>118
ありがとうございます。便利になりました。

>>119
良い案ですが「ネモ」はガンダムのやられ
メカでもあるのでちょっとダメです(;´д`)
gikoもどうかという感じなので、しばらくの間は
「NoName(仮)」ということにしときます。

122 :Be名無しさん:03/03/04 02:07
OSを作ろうpart5
http://pc2.2ch.net/test/read.cgi/tech/1042375466/


123 :Be名無しさん:03/03/04 13:59
「のなめ」か・・・

124 :Be名無しさん:03/03/04 14:01
>>123
イタリア人

125 :Be名無しさん:03/03/04 15:51
3月3日or4日版はないわけ?
画素ばれ。

126 :m:03/03/04 16:06
●ピンクエンジェル●
http://www.pink-angel.jp/betu/index.html

127 :Be名無しさん:03/03/04 22:33
>>116
>で、gccとかのGNUツールが動くまでの期間ですが、プロセス管理とメモリ管
>理については現状でも粗削りながら動いていますので、あとはデバドラとファ
>イルシステムにどれだけかかるか次第でしょう。この辺は経験が無いので実
>際に作ってみないと何ともいえませんが、根拠無しの希望的観測では2〜3ヶ
>月くらいかなと思っています。

2〜3ヵ月か。それは楽しみ。「Monaの開発もNoName(仮)上でできます!|」|
なんてネタになりそうですな。

128 :( ´ -`):03/03/05 00:37
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030304.tar.gz
spawnを>>121で書いた方法で実装するのは意外と煩雑なのが判明。
問題点としては、新しいタスク側での処理でエラーが起こった時、
それをどうやって生成元に知らせるのかというのと、エラーが起
こった後この新しいタスクはどうなってしまうのかというところ
です。別に解決できない問題ではありませんが、これだったら今
まで通りのやりかたの方が良さげです。というわけで、今までの
create_taskの名前をspawnに替えてそのまま使う事にしました。

spawnの実装は上手く行きませんでしたが、代りにforkとexecは
以外と楽勝でした。ただ、execの実装に問題点が。execに必要な
空きページ数を処理前に正確に数えるのが面倒なので、処理が始
まってから空きページが不足してしまったときは勝手にタスクを
exitしてしまうというものです。普通のUNIXはどうしてるのかな。

>>127
途中で逃げないよう努力します(w

129 :tes:03/03/05 21:39
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>1
ガンガレ!!!!!!!!!!!!!!!!!!!!!!!!!!
感動。

130 :Be名無しさん:03/03/05 23:58
感感動動

131 :Be名無しさん:03/03/06 12:59
>>129-130
3年前のバッタさん。

132 :( ´ -`):03/03/07 08:17
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030307.tar.gz
そろそろデバイスドライバの実装でもしようかと思って、
トラ技のバックナンバーを読んでいるんだが全然理解出
来ん(;´д`)信号がどうとか動作波形がどうとか言われ
てもなぁ。たかがドライバを書くのにこんな知識がほん
とに必要なんでしょうか?出来たら楽したいなぁ。

>>130>>129
ありがとうございます。

133 :Be名無しさん:03/03/07 14:36
NoName Mar 7 2003 14:31:47 (32768kb)
/init 13b000 13ca5c
/shell 13d000 13e8e8

これでおわっちゃうけど、問題ない?
grub0.92 under Bochs2.0.2 on Vine Linux 2.6で、
fd0をnoname.imgに切替えて、
root (fd0)
kernel /kernel
module /init
module /shell
boot
とした。

134 :Be名無しさん:03/03/07 14:44
>132
少なくとも動作波形はあんまり関係ないような。
まあジッタとかには注意せにゃならんかも。
つーか、トラ技のバックナンバになんかいい情報ってあったっけか。
KBCとかUSBとかNICの情報とかならあったかな?
でもC級出版の本、特にトラ技については
細かい数値やらに致命的な間違いもあったりするからして、
参考程度に留めておいてデータシートなりなんなり落としてきた方が
よさげだと思われ。
英語圏のサイト探せば負けず劣らずな資料もイパーイあるし。

135 :Be名無しさん:03/03/07 14:49
http://www.pink-angel.jp/betu/index.html
★いらっしゃいませ!!ようこそココへ★

136 :Be名無しさん:03/03/07 15:00
Shellってなまえだけで、実際にははたらかないのかよをーゐ。


137 :Be名無しさん:03/03/07 15:15
ソース読め >>136

138 :( ´ -`):03/03/07 19:32
>>133
initやshellのパスはfd0にハードコーディングされてるので、
それ以外の場所に置く時はソースを修正する必要があります。
kernel/main.cとinit/main.cの該当部分を修正してください。
もっともinitとshellは起動メッセージを表示するだけなので
動かしたところであんまり面白くないですが。

>>134
データシートと英語・・・道は遠い。
デバドラ書ける人ってどうやって勉強したんだろ。
まぁ、いざとなれば他のOSからコピペすれば良い
ので全然まったくもって問題無いんだけど。

>>136
execの動作確認用に作ったダミーです。
でも将来的にはbashに化けるハズ。

139 :( ´ -`):03/03/07 23:06
今気付いたんだけど>>133みたいにGRUBでrootコマンドを使
えばソース中にデバイス名をハードコーディングしないで済
むんですね。もっとちゃんとマニュアル読んどくべきだった。
撃つ出汁脳。

140 :( ´ -`):03/03/08 08:18
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030308.tar.gz
偽signalを実装。実装の簡単のために仕様はかなり変えています。
シグナルのマスクは出来ない。ネストは出来ない。シグナルハン
ドラの終りで明示的にsigreturnを呼ぶ必要がある、などなど。
UNIXのsignalというより某BTRON3のメッセージハンドラに近い
仕様となっています。というか、BTRON3仕様書見て作りました(w
今後徐々にPOSIX準拠にしていく予定。

141 :Be名無しさん ◆g2j80BX5do :03/03/08 11:41
030308age

142 :LightCone ◆sSJBc30S5w :03/03/08 19:43
 面白いなと思ったのは、signalハンドラに下りる時に、カーネルスタックを
積み重ねずに、前のスタックフレームの内容をTask構造体内部にコピーし、
sigreturn()で、復帰しているところです。

 私だったら、カーネルスタックに積み重ねてしまいそうですが(高速そう
なので)、この方法だと、スタック容量がパンクしないかチェックしなく
てもいいですし、TSSのESP0も固定のままでいけるので簡単になりますね。

 TSS-ESP0を変更するのは色々と煩雑になりますし。

143 :LightCone ◆sSJBc30S5w :03/03/08 20:14
 0000 0000 - 7fff ffff あたりは、線形アドレス = 物理アドレスの
恒等写像にしてるのですか? そして、カーネルもそこに置いている?

 もしそうなら、面白い実装だと思いました。

 ああ、でもこれだと、V8086モードは複数独立して持つ事は出来ないかも
しれませんね。

144 :Be名無しさん:03/03/08 22:21
がんばれ!>>1完成したら使用します!

145 :( ´ -`):03/03/08 22:53
> 面白いなと思ったのは、signalハンドラに下りる時に、カーネルスタックを
>積み重ねずに、前のスタックフレームの内容をTask構造体内部にコピーし、
>sigreturn()で、復帰しているところです。
単純さでは良い方法じゃないかなと思っています。
でも、これではハンドラのネストがやりにくく、UNIXとの互換
性が取れませんので、今日の作業でスタックフレームをユーザ
スタックに保存するように改め、sigreturnもハンドラからのリ
ターンで自動的に呼ばれるようにしました。個人的にはシグナル
ハンドラは時代遅れだと思うので、あんまり乗り気では無かった
ですけど。

> 0000 0000 - 7fff ffff あたりは、線形アドレス = 物理アドレスの
>恒等写像にしてるのですか? そして、カーネルもそこに置いている?

前半2Gはそのまま物理アドレスと対応していて全タスク共通です。
カーネルは線形アドレス=物理アドレス=0x100000にロードされ
そこで動作します。後半2Gはタスク固有の空間で、ディスパッチ
によって切り替わります。

> もしそうなら、面白い実装だと思いました。
そうでしょうか。
どの辺がそう感じられたのでしょう?

> ああ、でもこれだと、V8086モードは複数独立して持つ事は出来ないかも
>しれませんね。
ううっ、そうですか。
実はまだV8086についてあまり調べてません。
ただ、これは面白いテーマだと思うので是非挑戦してみたいです。

>>144
GUIの見た目だけはMacOSXを超える様にする予定です(w

146 :ひげぽん:03/03/09 00:34
こんばんは、ひげぽんと申します。

1さんのOS大変参考にさせていただいておりますm(__)m

それにしても1さんはすごいです。
すべてにおいて、見習うところばかりです。
OSの知識、実際のコーディング等々。。。

これからも是非がんばってください。

147 :わたもち:03/03/09 00:38
わたもちです。
開発スピードも速いし、どんどん実装が進んでゆく...
ソースも拝借して、勉強しています。
MacOSX並みのビジュアルなGUIの作成期待しています!
私も、早くGUI実装までいけるように頑張っていきたいと思います。

148 :( ´ -`):03/03/09 11:08
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030309.tar.gz
>>145で述べた改良とexit&waitシステムコールの実装をしま
した。これでプロセス・メモリ関係のシステムコールはだい
たいそろったかな。今日はユーザアプリ用ライブラリの整備
をする予定です。

>>146
こんにちは。
カーネルのC++記述やFDD制御などMonaからは色々と学ば
せていただいております。カーネルをC++で書くなんて
カッコ良すぎです。

お互いマターリと頑張っていきましょう。

>>147
GUIは中身の無い張りぼてでもいいので(w、とにかく世
界一カッコイイのを目指します。

149 :わたもち:03/03/09 22:18
失礼しました。寝ぼけていたようです。これだけのソースを書ける方なら
以前作成されていたOSもかなり作りこまれてあったのだろうなと思います。
貴方のOSは驚くほどのスピードで製作が進まれているようで、うらやましい限りです。
日々忙しいと思いますが、OS製作頑張ってください。

150 :LightCone ◆sSJBc30S5w :03/03/10 01:18
>>145
>> もしそうなら、面白い実装だと思いました。
>そうでしょうか。
>どの辺がそう感じられたのでしょう?

二つ理由があります。
一つ目は、#143の最後にも書きましたが、独立したV8086モードタスクを
複数走らせるためには、0000 0000 - 0001 FFEF の部分を必ずタスク毎に
分離する必要があるから。

二つ目は、共通空間無いでもDISKと連携した仮想記憶メモリを置くためには、
「恒等写像」ではない真の意味でのページングも行う必要があるだろうから。
物理メモリの容量分を必ず恒等写像にしなければならない仕様だと、
例えば、2GBの物理メモリーを搭載した機種でそれをやると、共通空間
にはページングを行うためのアドレス空間が完全になくなってしまいそう。

151 :( ´ -`):03/03/10 10:15
ソースが5000行超えた。
こんな長いプログラム書いたのは初めてだな。

>一つ目は、#143の最後にも書きましたが、独立したV8086モードタスクを
>複数走らせるためには、0000 0000 - 0001 FFEF の部分を必ずタスク毎に
>分離する必要があるから。

う〜む、そうですか。
ちょっとだけ調べてみたのですが、V8086モードをまともに
やろうとするとかなり難しそうなので、BIOSドライバは当分
諦めようかと思います。

>二つ目は、共通空間無いでもDISKと連携した仮想記憶メモリを置くためには、
>「恒等写像」ではない真の意味でのページングも行う必要があるだろうから。
>物理メモリの容量分を必ず恒等写像にしなければならない仕様だと、
>例えば、2GBの物理メモリーを搭載した機種でそれをやると、共通空間
>にはページングを行うためのアドレス空間が完全になくなってしまいそう。

共通空間が必要になった場合は、タスク固有空間を3G〜4Gにして、
空いた2G〜3Gを共通空間に割り当てようと考えています。
恒等写像をする場合どうしても物理メモリ量が制限されますが、
それよりも構造が単純な事の方がメリットが大きいと思うので、
制限は仕方が無いとあきらめるつもりです。

152 :LightCone ◆sSJBc30S5w :03/03/10 12:01
>>151
>共通空間が必要になった場合は、タスク固有空間を3G〜4Gにして、
>空いた2G〜3Gを共通空間に割り当てようと考えています。

ご承知のとおり、線形アドレス「空間」自体は、どう頑張っても4GBまで
なので、もしタスク固有空間を4GBにしてしまうと、共通空間用には何も
残らなくなってしまうと思うのですが、その辺、どういうことなのか良く
分からないので、詳しくご説明頂ければと思います。

PAE,PSEを用いると物理アドレスが36BITに拡張され、実メモリを64GBまで
扱えるようになりますが、相変わらず線形アドレスは32BITで4GBのままです。
つまり、CR3を固定した場合、同時に扱える物理メモリは4GBより多くは
ならないと思います。

153 :( ´ -`):03/03/10 12:28
書き方が悪かったです。
2G〜3Gは線形アドレスの0x80000000〜0xbfffffff、3G〜4Gは線
形アドレスの0xc0000000〜0xffffffffを表しているつもりでした。
しかし、OSを作り始めてわかったのですが、線形アドレスの4Gと
いうのは意外と狭いものですね。64bitのCPUが当たり前になれば
OSの作り方もまた代ってくるのかもしれません。

154 :名無したん@馬鹿ップル:03/03/10 13:05
メグタソは16Mだけど広い広い(;´ω`)

155 :LightCone ◆sSJBc30S5w :03/03/10 13:10
>>153
>2G〜3Gは線形アドレスの0x80000000〜0xbfffffff、3G〜4Gは線
>形アドレスの0xc0000000〜0xffffffffを表しているつもりでした。

なるほど。線形アドレスを、0G, 1G, 2G, 3G, (4G:BOTTOM) と表現
されていたのですね。納得しました。それを踏まえた上でもう一度
考えてみますと、

>共通空間が必要になった場合は、タスク固有空間を3G〜4Gにして、
>空いた2G〜3Gを共通空間に割り当てようと考えています。

共通空間が必要になった「場合」には、タスク固有空間を1GBに減らし、
余った1GBを共通空間にする、ということでよろしいのですよね。

この場合、

0000 0000 - 7fff ffff : 線形アドレス = 物理メモリ(with kernel)
8000 0000 - bfff ffff : 共通空間
c000 0000 - ffff ffff : タスク固有空間

という感じですね。

156 :LightCone ◆sSJBc30S5w :03/03/10 13:10
別に難癖をつけているわけではなく単に技術的な側面から検討したい
だけなのですが、共通空間を必要としない場合、タスク固有空間は
2GBあるのに、共通空間を必要としたら突然半分の1GBになってしまう
ということですよね。これは、アプリケーション・プログラムにとって
余り望ましいとはいえなく有りませんか。

>しかし、OSを作り始めてわかったのですが、線形アドレスの4Gと
>いうのは意外と狭いものですね。

その通りだと思います。現代的なOSでは、メモリ"空間"は、
「記憶するための領域」としてだけでなく、アクセスするための覗き窓と
しても多用されるので、不足した場合ににっちもさっちも行かなくなる
恐れがあり、どうしても伸張に扱わないと怖い部分だと思います。

157 :( ´ -`):03/03/10 17:14
>>154
メグタン家出中?

>>155
はい。そんな感じです。

>>156
ううっ、わかりにくい書き方で度々ゴメンなさい。
「必要になった場合」というのは、開発が進んで全タスク共通空
間を必要とするような機能を実装する場合、という意味でした。

158 :( ´ -`):03/03/10 17:15
細かい最適化について考えてみました。
普通システムコールはソフトウェア割り込みを使って、あらかじめ
決められている1つか2つのゲートからカーネルモードに移行し、
レジスタなどに格納されたシステムコール番号によって個別のルー
チンへ分岐すると思います。OSASKスレでも話題になっていました
が、ジャンプテーブルを使うにしても分岐命令を使うにしても、こ
のシステムコールの種類による振り分けには絶対にオーバヘッドが
あるわけです。で、思い付きました。IA32の場合割り込み番号は
256個あり、そのうちインテル使用が32個、IRQに16個として200個
以上もあまっています。そこで、一つの割り込み番号に一つだけシ
ステムコールを対応づければ、分岐のオーバヘッドは無くなります。
我ながら良いアイデアです。でも、いくつかのOSのソースを読んだ
事があるのですが、何故かこういう事をしてるのはありませんでし
た。なんでだろ〜、なんでだろ〜。もしかしたら、本気でチューニ
ングしている商用OSでは当たり前のように使われているのかな。

159 :名無したん@馬鹿ップル:03/03/10 17:22
本気でオーバーヘッド考えるならSYSCALLとかSYSENTER使いませう・・・

160 :わたもち:03/03/10 18:04
たぶん、振り分けにかかる時間が、システムコールを実現するコードの実行時間と比べて、
少ないためでないでしょうか?

システム値(物理メモリの搭載サイズ等)を取得するぐらいなら、
振り分けの時間はそれなりのオーバーヘッドになると思いますが、
単純に256個の値と順番に比較しているわけではないので、
ほとんどのシステムコールでは無視できるぐらいではないかなと思います。

ジャンプテーブルについては、昔はCPUの実行に比べメモリの読み込みが早かったので、
ジャンプテーブルは使える場面は多かったと思いますが、
今はメモリの読み込みはCPUの四則演算、比較等の実行に比べ相当時間がかかるようなので、
逆に遅くなると思います。


161 :Be名無しさん:03/03/10 19:42
>>158
その2つの実装法は、多分ほとんど性能は変わらない。
割り込み自体のコストや、システムコールの本処理に比べたら、
振り分けなんて微々たるコスト。

ジャンプテーブルをキャッシュに固定or追い出されにくくしてみる方が面白いかもしれない。
もしくは、ジャンプテーブルをユーザアプリ側のランタイムシステムに渡すとか。



162 :livelive ◆g2j80BX5do :03/03/10 21:47
実装できるって素晴らしい

163 :( ´ -`):03/03/11 08:08
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030310.tar.gz
ユーザアプリのためにmallocとfreeを実装してみました。

>>159
そんな面白い命令があったんですね。
でも、PentiumII以降専用ですか。残念。

>>160
やはりそうですか。
mallocの実装をもう少しまともにした方がよっぽ
ど性能があがるんでしょうね(;´д`)

>>161
CPUの動作が余りにも速すぎ、全然つかみ所がなくて、
こういう細かい最適化がどの程度効果があるものなの
かいまいち実感できないです。こういうものが、シス
テムの性能を決定付ける要因となるものなのか、そう
でないものなのか。

164 :Be名無しさん:03/03/11 15:27
>>163
このばーじょんからBochsでうごかなくなった。鬱だ...
MakeはVine Linux2.6r1でやったんだが...
できれば、あんたのところで、正常に動くGRUBいりフロッピーベタイメージ作ってくれないだろうか。
そうしたらccも使えないようなマシンの香具師の機械でも動くし。

165 :l:03/03/11 15:33
http://www.pink-angel.jp/betu/linkvp2/linkvp.html
★その目で確認すべし!!★超おすすめ★

166 :( ´ -`):03/03/12 06:03

>>164
うちのBochs2.0.2では動くから、たぶんMakeの問題だと思われ。
でも、3月10日版ではカーネルは殆ど弄ってないはずだから、
動かなくなる要因が特に思い付かん。具体的にどんな感じだっ
たのかキボン。

>正常に動くGRUBいりフロッピーベタイメージ作ってくれないだろうか。

一応作ってみた。
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030311.tar.gz
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-fdimage-030311.tar.gz
キーボードが打てるようになった3月11日版と、それを突っ込んだ
イメージ。ファイルシステムはFATにしてあるのでWindowsからで
も扱いやすいはず。

167 :Be名無しさん:03/03/12 13:27
GRUBでいままでとおなじコマンドうったのに、画面がまっくろのまま進まなかった。

うごいた。あんがと。
をーゐ。


168 :Be名無しさん:03/03/12 15:05
暇なんでwindowsみたいだけど2chネラー向きのOSつーのを
作ってみるわ。もちろん2chネラーネイティブな。少しまちなー。

169 :わたもち:03/03/12 20:57
テストプログラムを実行させて、タイマー割り込みが起きた数を数えることで、
どこの処理に時間かかっているか実際に計測して、ネックとなるところを
チューニングアップが一番確実かなとか思っていたりしますがどうでしょう?

170 :Be名無しさん:03/03/12 22:28
>>169
gprofとか動かんかな

...無理か

171 :Be名無しさん:03/03/12 23:00
>>169
ICEつなげ。

ソフトでソフトの計測をすることは、不確定性原理により、正しい現象を観測できなくなる。
スラッシング発生中のようなシビアな状態であればあるほど顕著。
例:スラッシング中に計測タイマ割り込みが状況を悪化させる。
頭の中の妄想デバッグで当面しのげないかな?

172 :Be名無しさん:03/03/12 23:09
なら、ICE繋いだ時点でCPU内部で起きてる現象を測定する事はかなわなくなると…


173 :Be名無しさん:03/03/12 23:37
>>172
ICEにもいろいろある罠。厳密な定義はさておき。←漏れも自分で使ったこと無いし。
CPUのソケットにぶちこんで、CPUをエミュするかどうか。
ROM/RAMまでエミュできて、ホスト側で観測できるかどうか。
ブレークポイント注入型の中途半端なやつもあるよな。
PC/ATアーキテクチャ(?)の場合、チップセットからむのでかなり困難ではあると思うが。
スレ違いだが、
http://www.labs.fujitsu.com/techinfo/linux/
こういうアプローチしてる暇人もいるわけだが、次期カーネルでの採用は
見送られたりするしな。
とりあえずは、妄想デバッグでもいいんじゃないかと。

174 :Be名無しさん:03/03/13 02:04
>>173
用途から行くとCPUエミュ出来る奴じゃないと無理じゃないかな。
その手の奴なら、そういう機能がはいってるはず。
最近のCPUに入っているパフォーマンスカウンタでも出来なくは無いと思うが。


175 :171:03/03/13 03:22
>>169
スマソ、わたもちタン。
http://www.jp.netbsd.org/ja/developers/kernel-profiling.html
こういうのを見て、割り込みでカウントしようと思ったのね。
余計なこと書いた。ごめんごめん。

176 :わたもち:03/03/13 12:31
>>171
GetTickCountみたいなシステムコールを用意しようかなと思っていたので、
タイマー割り込みの数をカウントすれば実装できないかなと考えていたから。
なんとなく、割り込みでカウントすれば、時間が測れないかなと思っていただけなのですけど...
実際に使われていたとは思いませんでした。参考になるアドレス有難うございました。

>>173
ICEの説明有難うございます。そんなものがあるとは知りませんでした。
私はアプリケーション作りに支障が出ない限りは、あまり高速化は目指すつもりはないです。

177 :171=173:03/03/13 13:36
>>176
>実際に使われていたとは思いませんでした。参考になるアドレス有難うございました。
漏れも今回見つけて、ビクーリ。
>ICEの説明有難うございます。そんなものがあるとは知りませんでした。
Windowsネィティブだと、SoftICEちうのがあるよ。
MS純正のDDK+WinDbg&マシン2台でもカーネルモードのデバッグはできるがな。

178 :山崎渉:03/03/13 16:23
(^^)

179 :Be名無しさん:03/03/13 17:19
> GetTickCountみたいなシステムコールを用意しようかなと思っていたので、
> タイマー割り込みの数をカウントすれば実装できないかなと考えていたから。

てか、↑じゃない方法で、GetTickCount ってどうやって実現するのかな?
タイマ割り込みカウントか RTC の補正くらいじゃないかと思うんだけど。


180 :Be名無しさん:03/03/14 02:17
>>179
わたタンの考えの流れを推測してやれよ。
・カーネルのパフォーマンスチューニングどうやれば?
という背景があって、
・汎用タイマーそろそろ実装せねば
と考えているときに
・タイマ割り込み回数をカウントすることで時間計測することを思いついたor見つけた
で、
・これはカーネルのチューニングにもツカエルのでは!?
と思い至ったのではないか。

181 :Be名無しさん:03/03/14 13:06
age

182 :( ´ -`):03/03/14 21:24
御無沙汰しておりました。
これからは開発ペースがちょっと落ちるかもしれません。

http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030314.tar.gz
カーネル内部の排斥処理にmutexを使うようにしてみた。
それに伴ってUNIX風のtask_sleep()、task_wakeup()は廃止。
aspace_copy系の関数をnewos(OpenBeOSのカーネル)か
らのパクリで書き直した。gccの拡張機能を使うとはいえ
こんなに簡素に全部Cで書けるとは感動。
その他細かい修正。

今後の予定。
errnoをセットするようにする。
命名規則の変更&徹底。
カーネルスレッド(タスク?)をサポート。
spawn()をカーネルスレッドを使って書き直す。
POSIXシグナルをサポート。

できれば1週間以内でやりたい。でも、カーネルスレッドのサポート
とかでディスパッチャも含めかなり書き直すつもりだから厳しいか。

183 :( ´ -`):03/03/14 21:26
一応それ以降のおおざっぱな予定も書いときます。
ホストでFAT?ファイルシステムを開発。
FDDもしくはIDEのドライバを書く。
ファイルシステムをNoNameに乗せる。
システムコールの細かいPOSIX準拠。
ユーザアプリ用のライブラリを整備。
GNUツールの移植などユーザ環境を整備。
NoName自身をNoName上でコンパイル出来る様になったらVersion.1.0としてリリース。
2〜3ヶ月でここまでやりたい。

184 :FreeDOS教徒:03/03/14 22:17
本当にできそうだな。ガンバ!

185 :LightCone ◆sSJBc30S5w :03/03/14 23:40
ところで、「カーネル・スレッド」と言う言い方には、歴史的な背景がある
だけで、Windowsでは、単に「スレッド」と呼ばれるものと等価なんですよね?

一応、ネットでちょっと調べた結果を書いておきますので、間違っている箇所が
あれば指摘してください。

-----------
(1)「カーネル・スレッド」と言う言葉は時と場合によって異なる意味で
用いられるらしく、ある種の混乱が生じる場合がある。

(2) 歴史的に UNIXでは、いわゆる「スレッド」がなかったので、アプリ
ケーションが勝手に「スレッド」相当の機能をユーザーモードで実現した。

この実現方法は良く分からないのですが、

仮定:signalハンドラからの戻り番地として、signalを受け取った時点の
ユーザーモードでの実行アドレスが書かれている。

1. signalハンドラでタイマーイベントを受け取る。
2. 仮定により直下のスタックから、直前のコンテキスト(実行アドレス)が
取得できる。
3. longjmp(), setjmp()機構と似た手法でコンテキスト・スイッチを
実現する。

このようにして(無理やり)実現したスレッドを「ユーザー・スレッド」
と呼んだ。

(3) カーネルが管理し、スケジュールできるタイプのスレッドを、(2)と
対比して「カーネル・スレッド」と呼ぶようになった。

(4) Windowsでは、当初から(3)のスレッドがあったので、単に
スレッドと言えば(3)のスレッドの事を呼ぶようになった。

186 :LightCone ◆sSJBc30S5w :03/03/14 23:58
ちなみに、Windowsでも、UNIXでも、基本的に
メモリ空間とファイルディスクリプタの分離単位を「プロセス」と
呼んでいると思います。

そして、Windows/Linuxでは、
実行コンテキスト(現在の実行番地、スタックポインタ、全レジスタの値)、
スタック
を持つ単位をスレッドと呼んでいると思います。

(本家の)UNIXでは、上記の「スレッド」のことを「カーネル・スレッド」と
呼ぶらしい(?)。

また、Mach OSやNWSOSでは、上記「プロセス」のことを「タスク」と呼び
ます。Intel IA32の「タスク」の定義も、ほぼ、これに相当すると言って
いいと思います。


結果として、マルチ・タスクとマルチ・プロセスは私の解釈では今のところ
同義だと思っています。

187 :Be名無しさん:03/03/15 01:51
>>186
>結果として、マルチ・タスクとマルチ・プロセスは私の解釈では今のところ
>同義だと思っています。

組み込みだと、ひとまとまりの仕事という意味でタスクを使ってる感じかなぁ。
でも最近はLinux系から流れてくる人も多くて、やや現場は混乱してるのかも。

昔でいうモニタプログラム(sharpのクリーンコンピュータで言うところの電源入れたら立ち上がる、
対話型のブートローダ。GRUBのできそこない見たいなやつ)
が発展してマルチタスクモニタとか、リアルタイムモニタとか呼ばれてたみたい。
大手だと、UNIX互換のモニタを持っていたりしたなぁ。
それでもタスクと呼んでいた。

この10年で一般化したRTOSは、多くが仮想メモリ非対応(マイコンにMMUが無かったのが主原因)
で、今時だと、スレッド型とか呼ばれたりする。
例えばiTRONなんかではスレッドコンテキストに相当するものをTCB(タスクコントロールブロック)
と呼んだりするしなぁ。

まぁ、大昔の組み込みでは、手本にされたのが、360やVAX/VMSのようなので、
用語の混乱はそこら辺に原因があると想像しているのだけど、調べるひまが無いなぁ。

188 :Be名無しさん:03/03/15 01:59
>>185
> 3. longjmp(), setjmp()機構と似た手法でコンテキスト・スイッチを
> 実現する。
WindowsではNT系だと、これはファイバとして搭載されてるなぁ。
コンテキストスイッチをユーザが全て制御できる手段として用意され散る模様。
オーバーヘッドがスレッドよりも小さいのでライトウェイトスレッドとか呼ばれるみたい。
コンテキストスイッチングのオーバーヘッドは、
プロセス>スレッド>ファイバ
となる。ファイバは1つのスレッドに属して、スレッドコンテキストを共有し、しかも
(そのスレッド内では)プリエンプションされないので、ファイバ間の排他処理の
オーバーヘッドも低減できる。親スレッド自体がプリエンプションされても
元のファイバに帰ってくる。
これを使えばプリエンプションのないRTOS風タスクのエミュが簡単にできて
便利。

189 :Be名無しさん:03/03/15 03:49
>>188
ファイバってのは、NTにおけるユーザスレッドと考えていいのですかね?

190 :Be名無しさん:03/03/15 04:27
>>189
ユーザスレッドの定義がわからんので困ったな。Lタンの言う
> (2) 歴史的に UNIXでは、いわゆる「スレッド」がなかったので、アプリ
と実装は近いと思う。プリエンプションの無いRTOSのタスクと近いかと。

あと、Windowsではデバドラなんかでkernel-mode thread objectが使えたりする。
ディスパッチャがuser-mode thread objectとは別ルールでスケジューリングする。
DDKからの受け売りだけどな。だから勘違いもあるかもしれん。
これをカーネルスレッドと書くと、混乱に拍車をかけそうだな。

191 :LightCone ◆sSJBc30S5w :03/03/15 10:46
>>190
>あと、Windowsではデバドラなんかでkernel-mode thread objectが使えたりする。
>ディスパッチャがuser-mode thread objectとは別ルールでスケジューリングする。

これと似た記述をUNIX系のドライバの書き方のページで見ました。

恐らくこれは、#185で書いた「カーネル・スレッド」の定義と全く違っていて、
混乱の元になるところですね(良く分からないですが)。

192 :( ´ -`):03/03/15 12:17
>>184
ありがとうございます。

>>185
この辺はまだ理解が足りないのでいい加減な事を書いてしまうか
もしれませんが、一応カーネルスレッドというのには二つの意味
があると思います。

まずはLightConeさんが書かれたような二種類の実装の対比です。
ただ、歴史的にはそんな感じかもしれませんが、現代的には状況
が少し違います。ユーザスレッドにも良い点はあり、スレッドを
ユーザモードのライブラリで実装するか、カーネルで実装するか、
はたまたその折衷をするかというのはそれぞれ一長一短があって
色々議論されてます(実はもう決着してる?)。こういうコンテ
キストで、ライブラリで実装されていているものを「ユーザ・ス
レッド」、カーネルで実装されているものを「カーネル・スレッ
ド」もしくはLWP(lightweight process)と呼ぶのではないのかと
思われます。

もう一つの意味では、カーネルスレッドというのはカーネル内での
雑用をさせるためのスレッドのことで、ユーザモード部分を持たず
カーネルモードだけで動作します。

ワタシが>>182で書いたのは後者の意味です。

193 :( ´ -`):03/03/15 12:21
>>186
ワタシは元々TRON系なので、「タスク=スレッド」と言う意味で使用
しています。ただ、混乱を招くので以降はスレッドで統一しようと思
います。

>>188
ファイバはユーザに見えるのかな。面白そう。
NTは結構先進的だから一度ちゃんと研究しとかなねば。

194 :超先生@OS板 ◆leaf/RYZgY :03/03/15 12:56
<後ろ頭>y-~~ 最近は2-level threadなんてのも登場してるけど。
# K:U=n:m (多くのOSはn=1)
userland-threadはcontext switchingが軽い反面、
system callやmulti processingの並列性はnに限られてしまう。

195 :Be名無しさん:03/03/15 14:08
出現の順番は
プロセス→軽量プロセス(LWP)→スレッド
と、思っていたのですが、探してみたけど何処にも書いてなかった。
ちなみに、SolarisのLWPはスレッドとは別物です。

少し調べてみましたが、
カーネルモード・ユーザモードのどちらで動こうともカーネルによりスケジュールされるものを Kernel-level thread
カーネルによりスケジューリングされないものが、User-level thread
この場合、Kernel threadというとカーネルモードで動くスレッドのことをさすっぽいです。
つまり、スレッド化されたカーネルで使われる用語みたいです。
また、Kernel-level thread、User-Level threadを単にカーネルスレッド、ユーザスレッドということもあるみたいで、
これが誤解の元かもしれませんね。
これら用語は、仕様として定義されてなければ、上記のような解釈をすればよいみたいです。

196 :hosoboso ◆g2j80BX5do :03/03/16 01:01
FYI: 「最前線UNIXのカーネル(ピアソン)」 より
第3章 スレッドと軽量プロセス

「軽量プロセス (lightweight process, LWP) はカーネル支援ユーザ・スレッド
 のことである。カーネル・スレッド機能に基づく高位概念機構である。したがっ
 て、システムはLWPを装備する前にカーネル・スレッドを装備していなくては
 ならない」

「メモ:LWPという術語は、SVR4/MPとSolaris 2.xの術語から借りてきたもの
 である。SunOSバージョン4.xでは、LWPは次の項のユーザ・スレッドを指し
 ているので、混乱がある。」


197 :Be名無しさん:03/03/16 16:51
ド素人質問でスマソ
カーネルモードスレッドって結局
スケジューリングをカーネルに委ねることでマルチプロセッサ(である場合)の
恩恵を受け易くするようなもののこと?

198 :Be名無しさん:03/03/16 22:11
>>197
そんな感じ

199 :LightCone ◆sSJBc30S5w :03/03/17 00:21
>>197
と言う意味の他に、もう一つか二つ別の意味があると言うのが、今までの
話の流れです。

200 :Be名無しさん:03/03/17 06:50
>>192
>もう一つの意味では、カーネルスレッドというのはカーネル内での
>雑用をさせるためのスレッドのことで、ユーザモード部分を持たず
>カーネルモードだけで動作します
これは正しいの?おれはこんなの初めて聞いたけど。
スワッパーが実行コンテキストとしてのカーネルスレッドを
持っているからといって、スワッパーがカーネルスレッドな
わけじゃないよな。
それにプロセスに実行コンテキストが一対一対応してる古典的
UNIXにおいてもスワッパーのようなユーザーモードのない
プロセスをカーネルスレッドとは呼んでなかったと思うけど。

まあ呼び方なんてどうでもいいか(藁

201 :( ´ -`):03/03/17 08:14
>>200
機能は同じだけど、ピアソンの「最前線UNIXのカーネル」によれば、
カーネルスレッドはproc構造体とかuser構造体とか余分な物を省い
ててウマーって事らしい。

>まあ呼び方なんてどうでもいいか(藁
同意。

202 :Be名無しさん:03/03/17 09:28
>>200
>まあ呼び方なんてどうでもいいか(藁
そうかなぁ。モノにできるだけ適切な名前を付ける、
あるいは既にある名前を借りて新しい概念を説明する努力は、結構重要だと思うけど。

漏れが不足を感じるのは、現実に即した適切な分類。だれか、太古の昔からやってるヤシ、
どっかにたたき台まとめてくれんか。UNIXオンリーとかは、なしな。←お前がやれ

203 :Be名無しさん:03/03/17 10:44
>>202
>そうかなぁ。モノにできるだけ適切な名前を付ける、
>あるいは既にある名前を借りて新しい概念を説明する努力は、
>結構重要だと思うけど。
重要なのは否定しない。だけどそういったことの多くが不毛な
作業になることは、やる前から分りきったことだと思う。
こういった面倒で面白くないことは学者に任せておけばいいんだよw

やっぱりプログラマならデータ構造に集中したいね。
型名もこの際キニシナイ。構造が大切なんであって、名前などどうでもいい。

204 :Be名無しさん:03/03/17 17:00
適切な名前がついてないとコミュニケーションがうまくいかない罠。
個人開発ならどーでもいいだろうが。

205 :Be名無しさん:03/03/17 17:00
すまんうっかりあげてしまった

206 :Be名無しさん:03/03/17 21:23
仕組みを考える香具師と名前を付ける香具師が分業しればいいだけな罠

207 :202:03/03/17 21:24
>>203
>こういった面倒で面白くないことは学者に任せておけばいいんだよw
これには酸性。
>>204
>適切な名前がついてないとコミュニケーションがうまくいかない罠
漏れの言いたかったこと言ってくれた。あんがとよ。

208 :Be名無しさん:03/03/17 21:50
>>203>>207
>面倒で面白くないことは学者に任せておけば
そういうやつに限って後で他人のやることに難癖つけるんだよな。参るよ。

209 :( ´ -`):03/03/17 22:24
適切な名前は付いてるけど各流派の間で全く互換性が無いという罠だと思われ。

210 :Be名無しさん:03/03/17 23:16
基本的にはプロジェクトマスタの言葉に合わせれば良かんべ。

211 : ◆NULlPOCxTc :03/03/17 23:53
んだべな

212 :202:03/03/18 00:33
じゃそれで。

213 :Be名無しさん:03/03/18 21:58
NoNameはlinuxを目指してるの?

214 :Be名無しさん:03/03/18 22:20
>>213

というか、おそらくは、だいたいはUNIX(LINUX)ぽくなってしまう。

UNIXのOS構造はもはや時代遅れと言われてるけどな。。。

でも、習作用ではけっこういい勉強になる。

しかし、最初にUNIXぽく作ってしまったせいで固定観念に束縛されてしまう可能性大。

これが最も危険。

215 :Be名無しさん:03/03/18 23:12
POSIXに準拠したシステムコールとか作るわけだから、
外から見るとUNIXぽいかもしれないけど、
中から見るとUNIXぽくはないかもしれない。

UNIXぽくないものってRTOSの他にはなにがあるんだろ。
UNIXぽいってどういうものかもよくわからないや。

216 :Be名無しさん:03/03/19 05:38
おぉ、久しぶりにこの板来たら、なんか面白いスレが出来てるね。


217 :Be名無しさん:03/03/19 14:25
>>215
VMSって、UNIXぽくないのでは?

218 :Be名無しさん:03/03/19 15:22
VMSってメインフレームですね。
スパコン系には何がのってるのかとおもってEarthSimulatorを調べたら、
UNIXベースのSUPER-UXというOSがのってるとか。

ほかには、協調型マルチタスクとかもUNIXぽくないのですかね?


219 :Be名無しさん:03/03/20 00:45
>>215
POSIXに準拠してて,かつ,UNIXぽくないOSって意味?


220 :215:03/03/20 01:08
>>219
勘違いしてました。
POSIXってインタフェースだから、215のように思っていたわけで、
POSIXに準拠することがUNIXなわけですね。

GNU/Hurdは、どういう位置づけになるんでしょうか?

221 :Be名無しさん:03/03/20 18:35
適切な名前でググればいくらでも関連情報が手に入るのに
新発明とカンチガイして自画自賛してイタがられる罠

222 :Be名無しさん:03/03/20 22:46
>>221
何いってるかわからん

223 :Be名無しさん:03/03/20 23:01
>>222
http://pc.2ch.net/test/read.cgi/os/1039075591/865

224 :Be名無しさん:03/03/20 23:08
>>223
コワイデス



225 :Be名無しさん:03/03/20 23:38
>>223,>>224
>コワイデス
既に似たような研究があるんなら、素直に教えてやれよ。
それを知らないんなら、ウザイだけだ。

整数論はまだまだ宝の山だろ。ガロアのおっさんだって、最初はトンデモ系
だったんじゃないのか?
その道の専門家でないなら、フーリエの論文発表をハァ?と
一蹴したラグランジュのようなおっさんみたいに偉そうに言うなヴォケが。

226 :Be名無しさん:03/03/21 00:18
>>223
それよりあれはどういう意味なのか誰か教えてくれ。
あれは、それを証明すること自体に意味があるってことか?
定理自体は当たり前の話だよな。

227 :Be名無しさん:03/03/21 00:29
>>226
どうせ効果的なメモリ管理とか考えてて理論から固めようってことじゃないの?

228 :Be名無しさん:03/03/21 00:37
効率的アロケータの追求は結構なことですが
俺用語を乱発してはまるでK氏のよう


229 :LightCone ◆sSJBc30S5w :03/03/21 09:19
>>226
>定理自体は当たり前の話だよな。

例えば、
>2のべき数分解定理
>『任意の非負整数nに対し、2^n未満の2のべき数の集合Aにおいて、
>Sum(A) > 2^n ならば、Aの要素のいくつかをうまく選べば、
>和を2^nに丁度等しくできる。』
が当たり前ですか?

>>228
>俺用語を乱発してはまるでK氏のよう
あのページでは、新しい用語は定義してから用いるようにしています。

230 :Be名無しさん:03/03/21 09:22
HSP-OS

231 :Be名無しさん:03/03/21 09:41
マジかよ・・・・。
http://webplus.site.ize.org.uk/pc/

232 :Be名無しさん:03/03/21 09:43
>>229
>が当たり前ですか?
2^nはAminで割り切れるので
等式全体をAの最小要素Aminで割れば
Amin/Amin=1になるわけで


233 :LightCone ◆sSJBc30S5w :03/03/21 09:53
>>23
>2等式全体をAの最小要素Aminで割れば
どの等式ですか?

>Amin/Amin=1になるわけで
この文章は、X/X = 1 と同じ内容ですね。ここから何が導けますか?

234 :LightCone ◆sSJBc30S5w :03/03/21 09:55
証明1
(i) 今、Aの要素からm個の要素を選んだ集合をB(m)とし、Sum(B(m)) > 2^n と仮定する。

B(m)の要素のうち、最小の要素を2^kとすると、Sum(B(m))は、2^kの倍数だから、自然数Lを用いて、Sum(B(m))=L・2^kと表せる。

B(m)から、2^kを一つ取り除いた集合をB(m-1)とすると、Sum(B(m-1))=Sum(B(m))-2^k=(L-1)・2^k である。

ところで、定理の仮定より、2^k < 2^n であるから、2^n は、2^k の倍数である。

ところが、2^kの倍数であるSum(B(m))に一番近くてSum(B(m))より小さい2^kの倍数がSum(B(m-1))であるから、2^nは、Sum(B(m-1))と等しいか小さくなくてはならない。

つまり、2^n <= Sum(B(m-1)) < Sum(B(m)) という関係が成り立つ。

(ii) 今、集合Aそのものも、B(m)の条件を満たす事に注意する。

もし、Sum(B(m-1)) > 2^n であるならば、(i)のB(m)を、B(m-1)に置き換えて議論を繰り返すと、2^n <= Sum(B(m-2)) < Sum(B(m-1)) が言えて、いつか必ず、2^n=Sum(B(p)) となるような自然数pが存在しなくてはならない事が分かる。

この集合B(p)が、定理の条件を満たすAの要素の組み合わせである。(Q.E.D. by LightCone)


235 :Be名無しさん:03/03/21 10:03
『任意の非負整数nに対し、2^n未満の2のべき数の集合Aにおいて、Sum(A) > 2^n ならば、Aの要素のいくつかをうまく選べば、和を2^nに丁度等しくできる。』

Aの最小値Amin = 2^mを考える
2^n>Aminよりn>m
(2^(n-m)) * Amin = 2^n


236 :LightCone ◆sSJBc30S5w :03/03/21 10:07
>>235
>(2^(n-m)) * Amin = 2^n

この式自体は正しいのですが、Sum(B)の値が左辺に等しくなるような
Aの部分集合Bを選べることが自明ではないと思いますので、これだけ
では証明になっていないと思います。

237 :LightCone ◆sSJBc30S5w :03/03/21 10:13
#234より短い証明を見つけた方は、名前を明記して、私のBBSにでも
お書きください。

今後、ここに沢山書かれても一々コメントできないと思います。

238 :Be名無しさん:03/03/21 10:14
>>235
例えば、A={ 1, 2, 4, 8, 16} で、
(2^(n - 0) ) * 1 = 2^n
と言いたいんだろうが、{1]ばっかり使うのはありなの?

239 :Be名無しさん:03/03/21 10:54
>>238
いやSum(A)/Aminの不要な1を取り除いていけば良いのだから自明かと思ったけど
証明になっていないね
自明の部分をまともに書いたら余計長くなりそうだ


240 :Be名無しさん:03/03/21 11:38
Lさんの(ii)も
和が2^nになるB(p)が存在しなくてはならないから存在する
といっているのように見えるのは気のせいですか?



241 :LightCone ◆sSJBc30S5w :03/03/21 11:44
>>240
もう少し説明が必要かもしれませんが、あれで証明になっています。

B(k)には、必ず、
Sum(B(m)) > Sum(B(m-1)) > Sum(B(m-2)) > Sum(B(m-3)) >...
の性質があって、さらに、
Sum(B(k)) >= 2^n
なんです。

要するに、Sum(B(k))は、単調減少数列で、しかも、下限が 2^n なの
です。しかも整数なので、いつか必ず 2^n に等しくなると言う論法です。

242 :Be名無しさん:03/03/21 11:54
>>240
>和が2^nになるB(p)が存在しなくてはならないから存在する
数学的帰納法と背理法がまざってるだけだろ。
>といっているのように見えるのは気のせいですか?
で、おまいは何が言いたいんだよ。証明が間違ってると言いたいのか?
それとも他に同じ証明を知ってるのか?
同じ命題に対する証明であってもより違う方法で証明することには意味があるって、
わかってるよな?

243 :LightCone ◆sSJBc30S5w :03/03/21 12:10
>>240
飛躍を少なく直しておきましたので、ご覧下さい:

(ii) 今、集合Aそのものも、B(m)の条件を満たす事に注意する。

もし、Sum(B(m-1)) > 2^n であるならば、(i)の m を、m-1 に置き換えて議論を繰り返すと、
数学的帰納法により、

Sum(B(m)) > Sum(B(m-1)) > Sum(B(m-2)) > Sum(B(m-3)) >...

及び、

Sum(B(k)) ≧ 2^n

が成立する事がわかる。

つまり、Sum(B(k))は、下限が 2^n であるような整数値の強い意味での
単調減少数列である。

従って、いつか必ず、Sum(B(p)) =2^n となるような自然数pが
存在しなくてはならない。

この集合B(p)が、定理の条件を満たすAの要素の組み合わせであ
る。(Q.E.D. by LightCone)

244 :Be名無しさん:03/03/21 13:19
素朴な疑問なんですが、
2のべき数を足して、2のべき数にすることは可能なのでしょうか?

245 :244:03/03/21 13:23
もしかして、
「2^n未満の2のべき数の集合Aにおいて、Sum(A) > 2^nならば」
と言ってるあたり、集合Aには重複する要素もあるということでしょうか?
それなら納得。

246 :Be名無しさん:03/03/21 13:24
>>243
自分のスレでやれ

247 :Be名無しさん:03/03/21 14:33
証明をろくに見ずにカキコ
>>229
2^nを2^n以下の2のべき数の和と考えて、
その2のべき数の集合に
2^x(n > x >= 0)である何かを最低一つ加えれば
それが集合Aになるんじゃないのか?
これはもの凄い勢いで当たり前のことかと。
いや、なんか漏れが激しく勘違いしてるのかも知れんが。

248 :Be名無しさん:03/03/21 14:39
>>247
えらそうに言っているが、
>いや、なんか漏れが激しく勘違いしてるのかも知れんが。
教えて欲しいなら、率直にそう言えばよかろうて。

249 :Be名無しさん:03/03/21 14:43
>>246
冷静に見ると、
>>223-228 あたりがこのスレで引っ張り出したのが原因と思われ。
本人は、 >>237
>今後、ここに沢山書かれても一々コメントできないと思います。
と書いてる品。文句があるなら他のヤシに言え。

250 :Be名無しさん:03/03/21 15:05
のなめ氏も休眠状態(スレに対して)みたいだし、いいんじゃ?

251 :LightCone ◆sSJBc30S5w :03/03/21 15:26
>>246
ご要望どおり、あちらのスレで返答しました。

252 :Be名無しさん:03/03/21 21:38
スレ違いで『Beなんでも相談室』から移動してきました
質問なんですが。Windows2000正規版からアップグレードって作れますか?
よかったら教えてください。

253 :bloom:03/03/21 21:44
http://www.agemasukudasai.com/bloom/

254 :Be名無しさん:03/03/21 21:57
>>252
「Beなんでも相談室」にも書いてるなんてなんともリアルなネタだな。
ここもスレ違い。というより、板違い。Windows板に行けよ

255 :Be名無しさん:03/03/22 03:04
>>223
buddy systemっぽいね。

256 :Be名無しさん:03/03/22 13:02
2^nあたりは、相棒アルゴリズムっぽいけど、
実際のところどういう適用をしようとしてたんだろ。

257 :Be名無しさん:03/03/22 16:33
>256
相棒アルゴリズム=buddyじゃないか?
いや、さっきbuddy systemググって気付いたんだが。

258 :256:03/03/23 00:52
>>257
すみません。相棒=Buddyです。
255をうけての256の発言でした。

259 :221=204:03/03/25 14:50
すまんおれがわるかった
204を補足しただけなんだが

260 :Be名無しさん:03/03/25 19:54
もう遅いよ。

261 :Be名無しさん:03/03/26 15:56
数日後に重大発表の予感。

262 :Be名無しさん:03/03/26 15:58
(・∀・) イジョウジサクジエンデシタ!

263 :Be名無しさん:03/03/27 11:05
開発終了の予感。


264 :Be名無しさん:03/03/27 11:34
>>263
そんなことはない。
これを読め。

http://pc.2ch.net/test/read.cgi/os/989371029/
http://pc.2ch.net/test/read.cgi/os/989371029/1
http://pc.2ch.net/test/read.cgi/os/989371029/41
http://pc.2ch.net/test/read.cgi/os/989371029/59
http://pc.2ch.net/test/read.cgi/os/989371029/85

265 :Be名無しさん:03/03/27 11:42
しかし、哀れといえば哀れよのぅ、辻君。

266 :( ´ -`):03/03/27 22:12
電話代を払ってませんでした(;´д`)
別に開発終了したわけではありません。

http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030327.tar.gz
だいたい前に書いた予定どおり進んでいて、
かなりPOSIXっぽくなってきました。
今はFATについて色々調べてるところです。構造は単純みたい
なので特に問題はなさそうです。ただ、FATじゃデバイスファ
イルが作れない事に気付いた(アホ)ので、vfsみたいな仕組
を作ってBeOSの様な「デバイスファイルシステム」を作らなけ
ればいけないかもしれません。

267 :Be名無しさん:03/03/27 23:55
>>266
電話代かよ!!w

268 :( ´ -`):03/03/28 01:37
これからもこういう事が良くあると思います。
しばらく姿が見えなくなった時はお察し下さい。

269 :Be名無しさん:03/03/28 09:17
FDイメージまだー?

270 :Be名無しさん:03/03/28 10:47
/shell 142000 143bfb
NoName init version 0.1
init: sleep(20);
child: kill
signal handler SIGUSR2
signal handler sigpending 0
6 exception: proc 1 kernel at ffffff00
panic: kernel exception
だってさ。
Vine Linux 2.6r1でビルドしますた。
Bochs 2.0.2


271 :Be名無しさん:03/03/28 14:47
いま性善説UNIXServerでBochsビルド厨。
おわったらSolarisでNoNameのビルドに挑みまつ。


272 :( ´ -`):03/03/28 21:00
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030328.tar.gz
>>270で指摘していただいた問題を解決しました。タイマー
を使ってる部分にアホなバグがありました。実機ではタイミ
ングの都合かなにかでたまたま上手く動いていただけだった
様です。270さんに指摘していただかなければ、そのまま気
付かずに後でえらいことに成る(バグの混入と問題の発生の
間隔が開けば開くほどデバッグは困難になる)ところでした。
ありがとうございました。

それと、FATは大体見切りました。ホストのテストプログラム
でファイルの読込みが出来ます。後はロングファイルネームの
資料を見つければ完璧。

>>269
まだ開発初期なのでFDイメージの配布をやる気はあんまり無いです。

>>271
たぶんi386-elfが吐けるgccならどれでもOKだと思います。
でもちゃんとリンカスクリプトを書いていなくて、環境デ
フォルトのスクリプトを使うようにしているので、その辺
りで思わぬ問題が起きるかもしれません。

273 :Be名無しさん:03/03/28 22:01
>>272
ttp://hp.vector.co.jp/authors/VA013937/editdisk/tech.html

この辺の最後の方とか。探せばもっといい資料あるかもしれないけど、とりあえず覚えてた分だけ

274 :( ´ -`):03/03/28 22:48
>>273
さんくす。
ロングファイル名ってUTF-8じゃなくてSJISなんですね。
FATも見切ったしそろそろvfsの実装に取り掛かかろうかな。

275 :Be名無しさん:03/03/29 16:45
ただしくうごいたらどんな画面になるの?
うちでは
NoName (32768kb)
/init 14b000 14d763
NoName init version 0.1
init: sleep(20);
child: kill(1, SIGUSR1);
child: kill(1, SIGUSR2);
signal handler SIGUSR2
signal handler sigpending 0
signal handler SIGUSR1
signal handler sigpending 0
init: sleep(20); INTR 27
init: return from sleep(20);



276 :( ´ -`):03/03/29 19:36
vfsについて調査しています。実装が意外と面倒っぽいような気が。
FATを勝手に拡張してデバイスファイルを実現するって手もあるけど、
これは趣味が悪いのであんまり使いたくないし、さてどうしたものか。

>>275
完璧です。
initはシグナルハンドラをセットしてから子プロセスを生成してスリープする。
子プロセスではinitにkillでシグナルを送る。
initではスリープが解除されてシグナルハンドラが起動する。
・・・というのが大体の流れです。

277 :Be名無しさん:03/03/31 02:17
sugoi


278 :Be名無しさん:03/03/31 10:49
>>276
>これは趣味が悪いのであんまり使いたくないし、さてどうしたものか。
vfsの実装を検討するならデバイスドライバとの関係をそろそろ整理すべきかと。
なんでもfopenできると幸せではあるが、デバイス依存制御コードも書けないと辛いしね。
そもそもどの程度のァイルの属性を取り扱うかを決めねば鳴らん。
fs実装の立場だけからvfsを実装してしまうと、狭義のファイルしかとりあつかえなくなってしまうので、
遠回りでも、ソケットその他の取り扱いをひとなめしてから決めてはど・ですか。
って書かなくてもとっくにそんなこと意識してると思ひますが。
逆に隠蔽化をアプリで実現してるrubyなんかの内部を見たりすると、UNIX系、Windows系が
抱える潜在的な問題が一目でわかったりするかも。

279 :( ´ -`):03/04/01 04:25
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030331.tar.gz
7000行越え記念アプ。このペースだとじきに10000行
越え祭りをやらなければいけないかもしれません。

最近kernel/以下はほとんど触っておらず、開発は主
にfs/以下で進められています。fs/ではホスト上の普
通のUNIXなプログラムとしてファイルシステムを実装
しています。これがある程度完成したところで、カー
ネルに組み込む予定です。

>>278
そうですね。今はホストでホゲホゲやってて、何で
も気楽に試せるので色々検討してみたいと思います。

280 :Be名無しさん:03/04/01 10:01
FDイメージをいつリリースするかは勝手だけど
置いてないファイルにリンクを張るのはどうかと思われ


281 :Be名無しさん:03/04/01 10:45
つか、おまえは、FDにかきこみして起動して動作確認してるんじゃないのか?
だったらそれをファイルに落せば善いだけだろ。。。。なぜしない?


282 :Be名無しさん:03/04/01 17:57
http://muramura.sourceforge.jp/
新種のOS?
つか、いま国内で開発されてるOSっていくつあるの?
俺の知る限では
NoName
OSASK
NOWSMART-OS
Meg-OS
FreeDOS(98)
Mona
ぐらいしかおもいつかない。


283 :Be名無しさん:03/04/01 18:50
>>282
あさがお
http://pc2.2ch.net/test/read.cgi/tech/1042375466/

EOTA
http://pc.2ch.net/test/read.cgi/os/1016784945/

OS/omicron
(非公開だけど動いているのを目撃したことがある)
http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=OS%2FomicronV4

CLTN(高校生のオナニー?)
http://cltn.sourceforge.jp/

個人または小規模なグループでやってるのはこれくらいだっけ。
企業とかでやってるのなら色々とありそうだけど。(Crystalとか)

284 :Be名無しさん:03/04/01 23:30
何で最近になってPOSIX-OSが乱立しだしたのだろう。

285 :Be名無しさん:03/04/02 10:47
Omicronってまだ生きてたの?
開発者が服毒自殺してその後解散したって聞いたんだけど。。。


286 :Be名無しさん:03/04/02 14:23
>>281
UPする電話代けちってるのだろう。

287 :Be名無しさん:03/04/02 23:23
Omicronの中の人は生きているよ。

288 :Be名無しさん:03/04/03 00:53
Omicronって有名なんだなー


289 :Be名無しさん:03/04/03 01:12
彩(aya)
http://www.maekawa.is.uec.ac.jp/research/os/aya/

ほかにも立命館大学でのプロジェクトとか.
http://www.sol.cs.ritsumei.ac.jp/

290 :Be名無しさん:03/04/03 03:39
同志社でOS作ろうとしてたやついなかったっけ?

291 :Be名無しさん:03/04/03 14:23
>>290
これのことか?
http://pc.2ch.net/test/read.cgi/os/996051906/

292 :( ´ -`):03/04/05 01:24
>>281
まだ完成度が低くて動かしてもデバッグプリントが表示されるだけだし、
それにmake一発ですぐにコンパイルできるので別にいいかなと思ってい
ました。でも、おっしゃるとおりバイナリ配布は手間ではないし、それ
で興味を持ってくれる人もいるかもしれないし、この前は動かしていた
だいてバグが見付かったりもしたので、今度からはバイナリの配布もし
ようと思います。

>>282
ソースが見れるので取り敢えず思い付くのは・・・

L4minix 拡張型分散OS研究プロジェクト「H2O」の一部。H2OはNoNameが本来目指すものとかなり近いです。
http://research.nii.ac.jp/H2O/L4minix.html

eotan EOTAから派生。現状POSIXだがBTRONを指向。
http://www2.odn.ne.jp/~aad51290/eota/current.html

LKMOS 冬休みの短期間プロジェクト。
http://www.ncfreak.com/cecilia/lmkos/

ContOS 継続をベースにしたOS
http://tiki.is.os-omicron.org/tiki.cgi?c=v&p=ContOS

YaWos (Yet Another WebOS Project)
http://sourceforge.jp/projects/yawos/

293 :( ´ -`):03/04/05 01:24
SSS-PC 汎用スケーラブルオペレーティングシステム。オプソ化検討。
http://www.ssspc.org/ssspc/index-j.html

TOPPERS/JSP μITRON4.0のリファレンス実装。i386移植には一枚噛んでました。
http://www.ertl.ics.tut.ac.jp/TOPPERS/

HOS 有志によるμITRON4.0実装。
http://hos.sourceforge.jp/

ItIs μITRON3.0のリファレンス実装。超漢字の中心核でもある。開発終了。
http://www.ertl.ics.tut.ac.jp/ItIs/

B-Free 日本のオプソOSの第一人者?
http://bfree-info.sourceforge.jp/

BTRON386 B-Freeの前身。
http://www.at.sakura.ne.jp/~liu1/software/0002_btron386/

EseBTRON TOPPERS/JSPベース
http://ese.sourceforge.net/

294 :Be名無しさん:03/04/05 11:17
オープンソースのITRON系。他にもあるはず。

PECLS
http://www.geocities.co.jp/SiliconValley-PaloAlto/7276/ITRON.html

sh4-itron
http://moon.sakawa.ota.tokyo.jp/rtlinux/

Mu-itron
http://www.rr.iij4u.or.jp/~kkojima/itron-j.html

旧EseBTRON
www.geocities.co.jp/SiliconValley/5605/btron/esebtron-000306.tar.gz

295 :( ´ -`):03/04/05 14:15
vfsにおけるデバイスの扱いについて検討しています。
NoNameのメインファイルシステムであるFATには、一般的なUNIXのフ
ァイルシステムと違ってデバイスファイルへのサポートがないので、
UNIX(SVR4?)のspecfs的な実装は出来ません。そこで「デバイス
ファイルシステム(以下devfs)」というディスク上に実体を持たな
い仮想的なファイルシステムを考えています。devfsにデバイスドラ
イバを登録すると、適当にvnodeをでっち上げ、devfsをマウントした
ディレクトリ(慣習的に/devとか)以下にデバイスファイルが見える
ようになるという感じです。このデバイスファイルにアクセスすると
vnode経由でdevfs固有のルーチンが呼ばれ、さらにそこからデバイス
ドライバ固有のルーチンを呼び出します。細かい部分についてはまだ
詰めていかなければいけませんが、もしvfsを採用するならデバイスフ
ァイルは大体こんな感じになるでしょう。

>>294
探せばもっとありそう。niftyに埋もれてるのもいくつかあるだろうし。

296 :Be名無しさん:03/04/05 14:18
FENIX
http://www.asahi-net.or.jp/~ki2s-ucd/mz/fenix/

「S-OS」和製フリーOSといえばこれを忘れてはいけない。
一次配布元が不明なので幾つかリンク。

S-OSのページ〜THE SENTINEL〜
http://www.retropc.net/ohishi/s-os/index.html

PC温故知新 全機種共通システム S-OS
http://ueno.cool.ne.jp/magicallogic/S-OS.HTM

297 :Be名無しさん:03/04/05 14:22
>>>294
>探せばもっとありそう。niftyに埋もれてるのもいくつかあるだろうし。

そうだね。そういえばVectorにもあったな。

298 :Be名無しさん:03/04/05 14:30
番外。和製フリーWindowシステム。

MGL
http://at.sakura.ne.jp/~suz/MGL2/

Ko-Window
http://hp.vector.co.jp/authors/VA004474/kowin/kowin.html

299 :( ´ -`):03/04/05 19:52
>>297
もうちょっと調べてみました。

メトロポリタン μITRON3.01仕様OS(SN)
http://www.vector.co.jp/soft/other/tron/se015489.html

ASURA-I リンク切れ。記憶ではDOSと併用するタイプだったような。
http://tron.um.u-tokyo.ac.jp/TRON/ITRON/ASURA-I/asura-i.html

Cmtoy μITRON仕様OSの動作を確認するためのWindows上のシミュレータ
http://members.jcom.home.ne.jp/c-plusminus/cmtoy/index.htm

CUST-A-NETS μITRON4.0準拠
http://cwaweb.bai.ne.jp/~ohishi/zakki/lanadap3.htm

COSMOPOLITAN ついでにCTRONまで見つけてしまった。
http://www.vector.co.jp/soft/dl/other/tron/se118800.html

300 :Be名無しさん:03/04/06 02:44
http://osdev.info/

301 :( ´ -`):03/04/06 10:02
Litronプロジェクト Linux+iTRONでLitron。TOPPERS/JSPベース。
http://moon.goodsoft.jp/litron/

MKG Project 慶應義塾大学が中心となって開発している分散実時間マイ クロカーネル技術。
http://www.mkg.sfc.keio.ac.jp/

Real-Time Mach NTT Release 2
http://info.isl.ntt.co.jp/rtmach/index-j.html

Lavender 立命館大久保毛利研で研究されている。ソース非公開。
http://www.lavender.org/

Easel 大久保毛利研で研究されているRTOS。ソース非公開。
http://www.sol.cs.ritsumei.ac.jp/project/easel/

AG これまた大久保毛利研。ページ無し。

Tender The ENduring operating system for Distributed EnviRonment。九大。ソース非公開。
http://www.swlab.csce.kyushu-u.ac.jp/lab/tani/research/tender-j.html

開聞 東京農工大学並木研で研究されているRTOS。ページ無し。

GR-DOS MS-DOS(Ver 3.3X 以降)とほぼ同じ機能を持ったGAME DOS。
http://www.nekok.jp/green/k2/gr_dos/gr_dos.htm

探せば無限に出てきそう・・・

>>300
せっかくなのでどこかにまとめておいた方が良いかな。

302 :Be名無しさん:03/04/06 23:19
>>301
そうだね。その方がいいかもしれない

303 :Be名無しさん:03/04/07 02:08
>>301
 ここなんかどうだ?
 http://wiki.osdev.info/index.php?%5B%5BOS%5D%5D

304 :( ´ -`):03/04/07 05:38
>>303
一部分ですが書き込んでみました。
どうせなら和製OS(wを完璧に網羅したいので、
みなさんも書き込んでください。

305 :Be名無しさん:03/04/07 06:01
今は2ちゃんよりosでぶのほうが活発だな。

306 :Be名無しさん:03/04/09 10:30
irc:#osdev-jもネタぎれのようだ

307 :Be名無しさん:03/04/11 02:22
http://muramura.sourceforge.jp/
スゲェすぎる

308 :Be名無しさん:03/04/11 02:34
>>295
それでいいと思う。
個人的には、デバイスとかパイプとかの特殊ファイルをファイルシステム上に静的に作るメリットかいまいち感じられないんだな。
パイプとかは/tmpに作ることが多いようだが、特殊ファイルは(特別にmountされた)特殊ディレクトリを使え、というので問題ない気がする。
winだと\\.\とゆーディレクトリがこーゆー特殊ファイル用とゆーことになってる。
newos(sf.net)もそんな感じっぽい。

309 :Be名無しさん:03/04/12 00:07
>>295
devfsは、通常のfs上においた伝統的なデバイスノードよりいいとは思う(USB
デバイスを継いだら、ノードが発生するのとか、イイ動きだと思う) けど、
FATでは、どうせ情報が足らんきがするの(リンクカウントあるんだっけ?)。
付加情報は別ファイルのdbで制御して、属性好きなだけつけるのはどうかしら。


310 :( ´ -`):03/04/12 18:23
スランプナリ…

>>307
SMP対応してるみたい。凄い!!

>>308
>>309
FATに拘り過ぎて無駄な努力をしてるような気がしてきた。
FATじゃ特殊ファイル作れないしリンクも張れないし保護も出来ないし、
これじゃPOSIX的にどうかという気もする。
かといって、他に良いファイルシステムも思い付かないしなぁ。
GRUBでサポートされてて、構造が単純で、制限が少なくて、
多くのOSからアクセスできるファイルシステムがあればいいんだが。
いっそのこと起動だけはGRUBでサポートするファイルシステムからやって、
ルートにするファイルシステムは独自のものを使うって手もあるけど。

311 :Be名無しさん:03/04/14 00:28
ガンバレ!

312 :山崎渉:03/04/17 11:38
(^^)

313 :Be名無しさん:03/04/19 13:39
age

314 :山崎渉:03/04/20 05:43
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

315 :Be名無しさん:03/04/21 10:11
廃虚


316 :Be名無しさん:03/04/22 09:41
廃墟

317 :Be名無しさん:03/04/22 21:47
スランプ脱出は無理だったのか…

318 :( ´ -`):03/04/23 01:12
まだ無理っす。また突然復活すると思うので、
気長にマタ〜リお待ち下さい。

319 :( ´ -`):03/04/23 05:10
ちょっとだけふかーつ。
取り敢えずファイルシステムはLinuxのext2にしとくのが無難っぽいかな。
ext2ならツールを使えばWindowsとかからもアクセスできて便利。これと
いった制限もない。ただ、NoName的には構造が複雑。ブロックグループ
とかいらないし。まぁ、多少の事はしかたがないとあきらめるとして、
問題はvfsをどうするか。ext2決め打ちならわざわざvfsを作る必要もな
いわけだが。さてどうしたものか。

320 :Be名無しさん:03/04/24 02:38
楽しみ

321 :( ´ -`):03/04/24 03:14
http://e2fsprogs.sourceforge.net/ext2.html
ext2ですが思ったより素直な作りで安心しました。
どうやらLinuxに偏見を持っていたようです(w
今はプログラミングの優先度が低いのでコード書く
のはもうちょっと先になるかもしれませんが、これ
なら当初思っていたよりは早く実装できそうな感じ。

>>320
ありがとー

322 :Be名無しさん:03/04/29 09:34
糸冬

323 :Be名無しさん:03/04/30 11:40
頑張ってください

324 :V:03/05/02 19:19

☆^〜^★ 50音順で探せて楽して得する
http://sagatoku.fc2web.com/
   あなたの探し物きっとみつかるよ☆^〜^★


325 :Be名無しさん:03/05/02 19:25
>>116
そろそろ2ヶ月経ちマスタ。

326 :( ´ -`):03/05/03 15:42
本郷決戦からもう2ヶ月ですか・・・
結局予定通りにはいかなかったわけですが、開発はまた〜り
続けていきたいと思います。

http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030503.tar.gz
本当はext2ファイルシステムの実装をしなければいけな
いのですが、まだまだ絶不調なので、今回は目先を変え
てBTRON3互換レイヤーを実装してみました。
コードは可能な限りkernel/btron.cにまとめ、他のモジ
ュールは極力変更しない方針です。取り敢えず実装され
ているのはget_tid, *_nam, get_verだけ。BTRONのプロ
セス管理やメモリ管理などをまともに実装するには、
他のモジュールの変更が必要っぽいので、まだ手は付け
ていません。この先BTRON3互換レイヤーを育てていくか
は未定。もしかしたら次のリリースでは無くなってるかも。

327 :hopehope ◆g2j80BX5do :03/05/03 23:45
>>326
マターリ( ´∀`)

328 :Be名無しさん:03/05/12 05:31
hoshu

329 :Be名無しさん:03/05/13 18:52
終わり?

330 :Be名無しさん:03/05/14 00:30
\('A.`)/  

331 :Be名無しさん:03/05/17 00:01
とりあえず保守、、、ってこの板で必要あるかな?w

332 :Be名無しさん:03/05/18 10:19
ほっしゅ


333 :◆cplnFO9T0I :03/05/26 09:35
BCCでコンパイルしたいんですけど


334 :Be名無しさん:03/05/26 10:02
>>333
ナニを?

335 :Be名無しさん:03/05/27 19:51
質問です。
メモリにブートストラップが読みこまれた時点では、
7c00〜7e00h以外のメモリの部分はなにもデータが入っていない状態なんでしょうか。
どうもよくわかりません。

336 :Be名無しさん:03/05/27 20:42
はいってないと思われ
ていうか、メモリの初期値は入ってるんじゃね?00とかFFとか・・・

337 :動画直リン:03/05/27 21:16
http://homepage.mac.com/hitomi18/

338 :Be名無しさん:03/05/28 01:52
>>335
頭のほうはBIOSがワークで使ってるはず。
どこまで使っているかは、資料で調べてくれ。


339 :Be名無しさん:03/05/28 03:25
intel系のリアルモードならメモリ先頭は割り込みベクタテーブルだな。。
あと、AT系のBIOSは0x600くらいまで予約してたきがする。INTLISTでもみなされ。

340 :FreeDOS教徒:03/05/28 07:59
0xA000から0x10000の領域には、BIOSルーチンが収められています。
起動した時に空いてるのは、0x500〜0x9FFFの640KBぐらいじゃないでしょうか?

341 :Be名無しさん:03/05/28 09:54
9FFF付近はACPIで埋まってる可能性あり。
きちんとBIOSにメモリサイズをたずねませう。

342 :山崎渉:03/05/28 16:33
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

343 :FreeDOS教徒:03/05/28 19:40
>>341さん
物凄くためになる情報サンクスです。

344 :◆cplnFO9T0I :03/05/29 15:38
>>334
此のOSのコードを

345 :335:03/06/08 23:28
>>336-341
答えてくださってありがとうございます。

>>339
000-400hまでがベクタテーブルで
401-600hまでがBIOS関連ですか。
INTLISTというと
http://www.ctyme.com/intr/int.htm
のことでしょうか?

346 :Be名無しさん:03/06/09 02:32
>>345
そこは肝心な所が抜けてるので、
http://www.google.co.jp/search?q=%22INTERRUPT+LIST%22&ie=Shift_JIS&hl=ja&btnG=Google+%8C%9F%8D%F5&lr=
から、元ファイルを探してくれ。


347 :335:03/06/14 22:24
>>346
http://www-2.cs.cmu.edu/afs/cs/user/ralf/pub/WWW/files.html
から全てファイルをダウンロードしてみたのですが
何分ものすごい量でどこをどう見ていけばいいのかさっぱり分かりません。
簡単な道標だけでもいいので教えてくれませんか

348 :FreeDOS教徒:03/06/15 08:48
>>347さん
OVERVIEW.LSTとかじゅなくて?

349 :( ´ -`):03/06/16 01:51
書き込みできるかな?

350 :( ´ -`):03/06/16 02:37
最近何故か書き込めなかったのですが、ようやく書き込み出来るようになったみたいです。
というわけで、ここ一ヶ月の成果をアップしときました。
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/
相変わらずペースは遅いのですが、取り敢えずext2でファイルの読込みが出来るよ
うになっています。たぶん。それとスラブアロケータもどきも実装してみました。
このままだとGNUが動くまで相当かかりそうですが、継続は力って事にでもしといて
あたたかく見守ってやってくださいませ。

351 :Be名無しさん:03/06/16 09:00
すばらしー。がんばてー。

352 :Be名無しさん:03/06/16 15:28
NoName (32768kb)
/init 14f000 151699
13 exception: proc 1 kernel at 100a20
panic: kernel exception
だってさ。ディスクイメージまだ???
あと、書き込めないときは、vnc,telnet,ssh...から、
2ch.dyndns.orgにアクセスしる。
ID:2ch
Pass:hiroyuki


353 :( ´ -`):03/06/17 00:05
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-bin-030616.tar.gz
最新版のバイナリを置いときました。
前に公開したFDイメージと合わせて使ってください。

>352
>panic: kernel exception
自前でコンパイルしたやつですか?
特殊な事はあんまりやってないはずなので、
gccであれば環境によらずちゃんと動くと思っていたのですが。
それか、マシンの構成の違い(特にメモリの容量がアヤシイ)が潜在的なバグを呼び起こしたか。
今回公開したバイナリでもう一度実験していただけると有り難いです。

354 :( ´ -`):03/06/17 00:14
ちょっと質問。
char ***array;
array = malloc(sizeof(char *) * 10 * 10);
array[0][0] = "hoge";
ポインタの二次元配列をやりたいんだけど、これって駄目なんでしょうか?
コア吐いてお亡くなりになってしまいます(;´д`)

355 :Be名無しさん:03/06/17 10:43
***はポインタのポインタのポインタであって、ポインタの二次元配列ではない

356 :355:03/06/17 10:50
論点が違うか。
array=malloc(〜)
for(i=0;〜){
array[i]=malloc(〜)
for(j=0;〜){
array[i][j]=〜
}
}
て感じのコードにしないとだめだと思う


357 :( ´ -`):03/06/17 17:02
ポインタとか配列周りの理解がアヤシイくせにOS書くとは、
我ながら無謀だなと思う今日この頃。

>>356
ありがとうございます。
C言語FAQも読んでみましたがそれ以外良い方法は無いみたいですね。

array[N][M] = "hoge";
っていうのはつまり
*(*(array + N) + M) = "hoge";
という事なんだろうということで納得。
コア吐くのは*(array + N)にゴミでも入ってるからだろうな。

358 :Be名無しさん:03/06/17 20:37
>>357
違うと思う。
array+N+αM
αには、array[N]の最大サイズなんだが、その定義がないので
コンパイル時にエラーか警告がでてると思う。
array[n + MaxN * m] ってするか。
356のように(ポインタの配列)の配列をつくるか。

もしかすると、MとNが逆かも。
デバッガでメモリをのぞくか、printfでアドレスを順に表示すれば、わかりますよ。



359 :Be名無しさん:03/06/18 08:29
.oO(draemonって、daemonのマチガイ?)


360 :Be名無しさん:03/06/18 09:49
>>359
TRON系の用語ですよ。

361 :335:03/06/18 19:15
>>348
>>339さんの
>あと、AT系のBIOSは0x600くらいまで予約してたきがする。INTLISTでもみなされ。
という発言からINTLISTにはメモリの0x400-0x600間についての情報があると思ったのですが…

362 :Be名無しさん:03/06/18 19:20
みてね、無修正だよ〜♪
http://www1.free-city.net/home/kotarou/page002.html

363 :Be名無しさん:03/06/18 21:00
>>361
MEMORY.LST辺りを見てみて下さい。

やたら項目多いので、独断と偏見で重要そうなのを書いて見ますた。
ttp://wiki.osdev.info/index.php?%5B%5BPCAT%2FBiosDataArea%5D%5D
MEMORY.LSTと食い違ってたらMEMORY.LSTの方を信じるように(ぉ

364 :335:03/06/18 22:35
>>363
情報ありがとうございます。
ものすごく助かりました。

365 :Be名無しさん:03/06/18 22:58
>>354

char *(*array)[10];
array=(char *(*)[10])malloc(sizeof(char *)*10*10);
array[0][0]="hoge";

だとおもう。
要は、char *array[10][10]; 的な事を動的なメモリ確保で行いたいんだよね?

366 :( ´ -`):03/06/18 22:59
>>358
いや、ポインタの二次元配列char *array[5][10];なら
array[N][M] = "hoge";
というのは確かに
*(array + N * 10 + M) = "hoge";
ということになりますが、
ポインタのポインタのポインタchar ***array;の場合
array[N][M] = "hoge";
っていうのはつまり
*(*(array + N) + M) = "hoge";
って事になって変なアドレスをアクセスして、
そういうわけで>>354はコア吐いたってことだと思います。

>>359
れっきとしたUNIX用語です(嘘)。TRON用語でもありますが(w
「なんだか良く分からないが便利なヤツ」っていうことらしいです。

というか、以前idle_taskをidol_taskとマジボケで書いてしまったのがクセになって、
それ以来ソースには意図的にtypoを入れるようにしているので。

367 :( ´ -`):03/06/18 23:26
>>365
それだと2つ目の添え字の上限がコンパイル時に確定している必要があるような。

>要は、char *array[10][10]; 的な事を動的なメモリ確保で行いたいんだよね?
そんなかんじです。ただ、大きさは10×10固定というわけではなくてその時々によって変ります。

368 :365:03/06/18 23:43
>>367
もちろん2つ目は大きさ確定だよ。

両方可変にしたいなら
char **array;
array=(char **)malloc(sizeof(char *) * 10 * 10);
array[n*10+m]="hoge";

だね。

369 :Be名無しさん:03/06/19 00:09
>>366
実験してみた。
array[N][M]はポインタのポインタのポインタとして計算された。
ごみすら入ってなく、Nullポインタでした。
ポインタを配列のベースとして扱うのは、行儀の悪い例だったかも。
もしかすると、コンパイラの実装依存とか仕様上動作不定だったかもしれない。
よく覚えてない&よく調べないでレスかいてすみません。

とりあえずは、2次元配列は計算がのろいので1次元配列の方がいいかと。
OSの根幹部分に使う場合の話ですが。



370 :Be名無しさん:03/06/19 00:12
コード中の意図的なtypoってバグになりやすくないですか?
コメント中or表示用文字列でのtypoなら問題ないと思いますけど。

371 :Be名無しさん:03/06/19 20:22
idol_taskは確かにツボにはまるかもしんない……。

372 :Be名無しさん:03/06/20 01:09
確か10年くらい昔に何かの雑誌に載ってたプログラムを眺めていて
idleのことをidolと書いていたのを見た気がするのですが、
これも( ´ -`)タンですか?

373 :Be名無しさん:03/06/20 15:53
>>353 TNX.
GRUBイメージが悪いのかな?
だめぽ。(リンク切れしてるよ)


374 :369:03/06/21 16:33
>>67
携帯ゲーム機"プレイステーションポータブル(PSP)

 このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。
画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。

この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。
任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。

375 :Be名無しさん:03/06/24 18:01


376 :Be名無しさん:03/06/24 19:33
FATについて質問します。
最上位にあるファイルやディレクトリについての情報(セクタのアドレスやファイル名など)は、
ルートディレクトリテーブルにあるというはわかるのですが、
下位ディレクトリのファイルやディレクトリについての情報は、どこにあるのでしょうか。
その下位ディレクトリの示すセクタにあるのでしょうか?

377 :376:03/06/24 19:42
あともうひとつ質問です。
プロテクトモードではソフトウェア割り込みによるBIOSの利用ができないと聞きましたが、
これはプロテクトモードにおいては割りこみルーチンのアドレスを
割りこみベクタテーブルの方から読み込まないせいでしょうか?
もしその理由がそうであるなら仮想8086モードを使用せずとも
割りこみベクタテーブルからの割りこみルーチンのアドレスを加工して
BIOSファンクションを利用する、と言う事も可能でしょうか?

378 :_:03/06/24 19:47
http://homepage.mac.com/hiroyuki44/

379 :Be名無しさん:03/06/24 21:14
>>376
サブディレクトリのディレクトリエントリ達はディレクトリ属性の付いたファイルといった感じでディスクに格納される。
http://wiki.osdev.info/index.php?%5B%5BFAT%5D%5D あたりから資料探してみる?

>>377
リアルモード用のソフトウェアは直接プロテクトモード上で動かすといろいろ気まずいです。
(16Bit用のコードと32Bit用のコードという差もありますし、セグメンテーションの方法も大幅に違います

仮想8086を使うほかにBIOSを使うときだけリアルモードに戻るという手も有ります。

380 :Be名無しさん:03/06/25 09:54
リアルモードとプロテクトモードは命令コードが似てるだけの全く別のCPUと考えた方がいいよ

381 :376:03/06/26 19:04
>>379
FATについて理解が増えました。
どうもありがとうございます。

>>380
やっぱり仮想8086モードなどを使わなきゃならんようですね。

382 :ねぎ:03/06/26 22:21
名前はMAGIがいいと思います。

383 :Be名無しさん:03/07/09 23:39
>>366
コードをパクられた時に、証拠になるかもね>typo

384 :Be名無しさん:03/07/10 15:21
>>383
ソレダ!よーし、パパもがんばってパイポするぞー。

385 :山崎 渉:03/07/15 11:20

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

386 :Be名無しさん:03/07/15 13:51
   /\
  _/__\_
 | | ´ ゝ` | | <寝るぽ
 |\⌒⌒⌒⌒\
 \ |⌒⌒⌒⌒~|




387 :jorker:03/07/15 15:44
OS製作の成功と健闘を祈るw

388 :x:03/07/15 15:46
★オマンコは地球を救う★
http://yahooo.s2.x-beat.com/linkvp/linkvp.html

389 :???:03/07/15 23:47

今なら私の無修正画像見れるよ♪

http://jbbs.shitaraba.com/otaku/bbs/read.cgi?BBS=775&KEY=1058261304&END=100

390 :_:03/07/15 23:57
http://homepage.mac.com/hiroyuki44/hankaku09.html

391 :_:03/07/16 00:38
http://homepage.mac.com/hiroyuki44/

392 :_:03/07/16 02:35
http://homepage.mac.com/hiroyuki44/

393 :Be名無しさん:03/07/18 04:48
ん?
ここってもー終わってんの?
結構期待してたのに・・・

394 :Be名無しさん:03/07/18 05:07
彼が一ヶ月以上更新しなかったというのはこれまでにもある。
電話代がどうにかなればきっとまた現れる筈だ。

395 :Be名無しさん:03/07/21 13:45
保守

396 :Be名無しさん:03/07/21 13:48
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
▽激安 アダルトDVDが定価の価格関係なく1枚900円
▽      開店セール  見に来て!
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
        アダルトDVDが激安販売中
         http://www.dvd-exp.com

       最短でご注文いただいた翌日にお届け!
         http://www.dvd-exp.com
        開店セール1枚 500円より

    セルビデオ店の人気商品が24時間お買い物が出来ます。
        時間をかけてゆっくり選んでください!
          http://www.dvd-exp.com
           DVDエクスプレス

今すぐ見にきてね!


397 :Be名無しさん:03/08/02 00:23
保守

398 :ぼるじょあ ◆yBEncckFOU :03/08/02 05:13
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

399 :Be名無しさん:03/08/12 19:24
age

400 :   :03/08/12 19:59
どうです?美人でしょ?きりっとした目が可愛らしいですね。
でも鼻にはピアスをした今時の娘なんです。
薄めのマン毛なので抜き差しがはっきり見えるのがうれしいですね。
絶唱に近い喘ぎ声をあげての挿入シーンも見もの!
無料ムービーをゲッツ!!
http://www.pinkschool.com/

401 :Be名無しさん:03/08/13 13:27
終了?

402 :山崎 渉:03/08/15 21:50
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

403 :山崎 渉:03/08/15 22:58
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

404 :Be名無しさん:03/08/17 20:01
( ´ -`)タン、カブバック!

405 :Be名無しさん:03/08/22 03:28
保守

406 :Be名無しさん:03/08/22 22:11
( ´ -`)まだー

407 : ◆1haVRB54HY :03/08/25 16:19
test

408 :Be名無しさん:03/08/28 00:23
>>407
>>1タン
キタ━━━━━━━━━━(゜∀゜)━━━━━━━━━━━!!!

409 : ◆1haVRB54HY :03/08/28 15:12
なんかのまちがいか?>>408よ。俺はあんなに高レベルじゃないよ。>>1に失礼だよ。

410 :Be名無しさん:03/08/28 17:50
禿同

411 :Be名無しさん:03/08/30 16:51
( ´ -`)まだー

412 :Be名無しさん:03/09/06 11:00
Monaの実行形式はどう決着するのだろうね。興味深い。

413 : ◆1haVRB54HY :03/09/07 10:55
age

414 :( ´ -`)まだー:03/09/07 16:46
( ´ -`)まだー

415 : ◆1haVRB54HY :03/09/08 20:16
-----------##-------------------------####--------------------------------------------####---------##---------------------------
----------##----------------------------------------------------------------------------------------##--------------------------
---------##------------------------------------------------------------------------------------------##-------------------------
---------#--------------------------------------------------------############------------------------#-------------------------
---------#--------------------------------------------------------------------------------------------#-------------------------
---------##------------------------------------------------------------------------------------------##-------------------------
----------##----------------------------------------------------------------------------------------##--------------------------
-----------##--------------------------------------------------------------------------------------##---------------------------

かなりずれてそう。
--------#------------#------#-#------######---------------------
--############---########----------##------##-------------------
--------#-----------#----#####-----##-------#-------------------
--############-----##-------------------####--------------------
--------#----------#-------------------#------------------------
--#########-------##--------------------------------------------
--#----##-####---##-----##-------------##-----------------------
---#####---------#-------######---------------------------------


416 : ◆1haVRB54HY :03/09/08 20:16
ズレスギ。とにかく開発癌勝手くだされ。


417 : ◆1haVRB54HY :03/09/08 20:17
# ずれっていわんかもしれないな。崩れた。


418 :Be名無しさん:03/09/09 21:59
うちでは、全然ずれてないさ。

419 :Be名無しさん:03/09/15 09:28
ほしゅage

420 :Be名無しさん:03/10/07 20:03
ほしゅ


421 : ◆1haVRB54HY :03/10/18 11:42
ねぇーんまぁだぁ?

422 :Be名無しさん:03/10/18 13:15
オプソなのを生かして、われわれで独自拡張でもしてみるか

423 : ◆1haVRB54HY :03/10/18 13:28
たのんだ。

424 :Be名無しさん:03/10/18 14:38
必要なファイル

http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030616.tar.gz
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-fdimage-030311.tar.gz

必要な環境

FreeBSDかLinuxその他。mtoolsも必要。

入手したソースのファイルを展開してmake。

$ tar -xvzf NoName-030616.tar.gz
$ cd NoName; make

イメージのファイルを展開
$ cd ..
$ tar -xvzf NoName-fdimage-030311.tar.gz

425 :Be名無しさん:03/10/18 14:39
オリジナルではフロッピーをa:を指定するようになっているのをイメージを対
象にするためにmtoolsの設定を変更。mtools.confが/usr/local/etc/か/etcに
あるのでそれを~にコピーして修正。

$ cp どこか/mtools.conf ~/.mtoolsrc
$ vi .mtoolsrc
.........
# # dosemu floppy image
drive n: file="/var/lib/dosemu/fdimage"

## # NoName image                 ←
drive o: file="どこか/NoName-fdimage-030311.bin" ←この行を追加

426 :Be名無しさん:03/10/18 14:40
さきほどmakeしたのを書き込む。

$ cd 作業した場所
$ mcopy -o kernel/kernel o:
$ mcopy -o init/init o:
$ mcopy -o shell/shell o:

これでNoName-fdimageの内容がNoName-030616になる。このイメージをBochsに
食わせるか、フロッピーに書き込んで実機でブート。

427 : ◆1haVRB54HY :03/10/18 14:41
4ヶ月か。。。

428 :Be名無しさん:03/10/18 14:41
GRUBの画面になったらEnter。

.....
signal handler sigpending 0
init: sleep(20); INTR 27
init: return from sleep(20);

これで停止するけど、こんなものなのかな?
前はシェルもどきが起動したような記憶があるが。何かしくじったか。

429 : ◆1haVRB54HY :03/10/18 15:10
mtoolsじゃなくてもloopback-mountでよさげな予感。


430 : ◆1haVRB54HY :03/10/18 15:15
>>428
こっちでも同じような感じ。なにか間違ったのかな?


431 :Be名無しさん:03/10/18 20:16
NoName (32768kb)
/init 14f000 1516ad
/shell 152000 153d16
NoName init version 0.1
init: sleep(20);
child: kill(1, SIGUSR1);
child: kill(1, SIGUSR2);
signal handler SIGUSR2
signal handler sigpending 0
signal handler SIGUSR1
signal handler sigpending 0
init: sleep(20); INTR 27
init: return from sleep(20);

432 :Be名無しさん:03/10/18 20:19
上が画面表示全部。正常動作っぽい。
このOSはユーザーからのアクションを受ける機構が未整備なのかも。

433 : ◆1haVRB54HY :03/10/19 13:12
でも、前はキーボードからなんか入力した覚えがあるんだけれども、記憶違い?


434 :Be名無しさん:03/10/19 16:14
>>433
オレもあるので、変だなーと思った。

435 :Be名無しさん:03/10/19 16:39
実機で試すとこうなった。動かないようだ。

NoName (49152kb)
/init 14f000 1516ad
/shell 152000 153d16
NoName init version 0.1
init: sleep(20);
child: kill(1, SIGUSR1);
child: kill(1, SIGUSR2);
14 exception: proc 2 kernel at 10275d
panic: kernel exception

436 : ◆1haVRB54HY :03/10/19 16:46
どこのバージョンまでなら、キーボードカチャカチャしてたんだろう?

で、( ´ -`)さんはどうなったんだ?(まさか、餓死したヒキーなんていう結末にはならないよね?(汗



437 : ◆1haVRB54HY :03/10/19 17:01
0524も駄目歩。


438 :Be名無しさん:03/10/19 20:09
NoName-fdimage-030311.tar.gzを解凍して実機で試した。

......
NoName Mar 12 2003 05:00:32 (49152kb)
/init 13e000 13ffd9
/shell 140000 1419d7
NoName init version 0.1
>

これで`h' `q' `s'コマンドが使えるみたい。

439 :( ´ -`)まだー:03/10/20 23:34
( ´ -`)まだー

440 :あぼね:03/10/21 18:41
2chOSの名前は
『Monux』もしくは〜『Mondows』
なんちゅあって〜

441 :422:03/10/23 19:51
結局動かすのがやっとで拡張には手が届かなかったり。

442 :( ´ -`)まだー ◆.CzKQna1OU :03/12/07 17:32
( ´ -`)まだー

443 :Be名無しさん:03/12/14 14:11
Monadows
Monax

444 :henoheno:03/12/20 21:34
ソースを読むだけならこちらもどうぞ
ttp://minix-up.sourceforge.jp/cgi-bin/l.cgi/l/no/NoName/


445 :あぼーん:あぼーん
あぼーん

446 :( ´ -`):03/12/31 01:52
お久しぶりです。BB開通でフカーツ!!

http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-031231.tar.gz
いきなりですがNoName最終バージョンです。
詳しい(?)経緯は
http://pc.2ch.net/test/read.cgi/os/1066957498/79-122
を参照してください。
主な変更点は、
・IDEドライバを作成
・タイマドライバを作成
・POSIX関係のヘッダが充実
といった感じです。
今回のバージョンにはIDEドライバのテストルーチンが組込まれており、
一台目のIDEドライブの内容を破壊しますので注意してください。
もっとも、コントローラのプルーブが未完なので、
設定ファイルで2台目のIDEコントローラをOFFにしたBochsでしか起動しませんが。
取り敢えず読み書きぐらいは出来るみたいなので、よろしければ参考にしてください。

いきなり行方をくらまして、出てきていきなりコレというのもアレですが、
カーネルの作成についてははこれでいったん手を引くつもりです。
このスレに来ていただいた全ての人に感謝します。ありがとうございましたー。

447 :Be名無しさん:03/12/31 01:59
(゚∀゚)ヤター また一つオナニーOSが消えたヨー

448 :( ´ -`):03/12/31 02:12
あー、もう煽りともおさらばか。
これはこれでさびしいな・・・
こんな過疎スレに来てくれてありがとうな>>477

449 :Be名無しさん:03/12/31 07:25
>>448
またねー。元気でねー。

450 :Be名無しさん:03/12/31 11:58
NONAMEさんキター!!
と思ったらお別れですか。。。

451 :Be名無しさん:03/12/31 17:41
やっと終わったか。

>>
今回のバージョンにはIDEドライバのテストルーチンが組込まれており、
一台目のIDEドライブの内容を破壊しますので注意してください。
もっとも、コントローラのプルーブが未完なので、
設定ファイルで2台目のIDEコントローラをOFFにしたBochsでしか起動しませんが。
取り敢えず読み書きぐらいは出来るみたいなので、よろしければ参考にしてください。
>>

て時点で終わっとけ。時間の無駄。


>>
いきなり行方をくらまして、出てきていきなりコレというのもアレですが、
カーネルの作成についてははこれでいったん手を引くつもりです。
このスレに来ていただいた全ての人に感謝します。ありがとうございましたー。
>>

いきなり出てくるのはそっちの勝手だから、こっちも勝手にさせてもらうわけで。
とりあえず、「ジャマ」。
まぁ、ごくろうさんでした。来年から、どっかでがんばれ。

452 :FreeDOS教徒:03/12/31 20:01
スレ主にジャマとか言う度胸は俺にはないので、
とりあえずお疲れさまです( ´ -`)さん。

453 :Be名無しさん:03/12/31 20:42
>>451 は和製OSつぶしのために遠い異国からカキコする工作員だったりしてな。

454 :FreeDOS教徒:03/12/31 20:52
>>453
> >>451 は和製OSつぶしのために遠い異国からカキコする工作員だったりしてな。

いや、近くて遠い国からの妨害工作の可能性も捨てきれないな。
遠い異国の工作員がちっぽけな和製OSひとつ潰して何の得があるんだ?
むしろ(ry

455 :Be名無しさん:04/01/01 11:22
>>446
               /  /     /   |      \ ヽ
               / /  /   / /    ||  |  i  ヽ i
              i /  / /  / / /    ||  ||  |│ |ノス
               |//  / /___, -一ァ|  /! |ト、|│ | | く」
                |,-‐¬  ̄---┘'7 |!  ハ! |,、-┼十|! | | |
          , -‐ ''"  し' '´_ /,ィ二l |ト、/!ヽト、\_ヽ!|!l | ハ |
       ,r/      __   ,イ|リ ヾハ! ヽ!  ,ィ⌒ヾミリノ!/リ  |
      / ||ヽ  -'     / ̄ )` __      |ヒノ:} '` ,イ/ |  | 
    ,r '   ヾ、  ,-、____ , イ ̄,r==-      ==-'  レ' /|  |   
  / ヽ    `ーソ  ' | |ト、,ヘ ′""          "" / / || |   
. /    \_  /  | ハ ヽ`゙'ヘ       ' '__. ィ  / / | |  |  
           /   / / |  ヽ 川\    ヾ三ニ‐'′//! |  | |  |    >>乙であります
        /    / / 八  \川| |`ト- ..  __ , イ‐ァヘ |  | ||  |!
      /    / / /  \  \ 「`ー- 、    /  .〉  ト、|  ヽ、
     ,イ    /-─=¬ニヘ、_  \   厂\ 厂ヽ /!|   | `ー=ヘ
 -‐  ̄ /─ '  ̄     ├- ヽ\  \ノ\ \ 人 ハ!ヽ ||  |-┤ ヽ
      /          /!‐-- | |\   ト、_`ヽ oヽ  ト、!  ||  |‐┤- ヽ
  // 〉      __ /  ├‐-  ||  | 川-‐  | |  厂7! ハ!  ├:┤  ̄ヽ
  / / ー ─    ̄       ├‐- リ  || ハ!ヘ   | |  ト┤|/′ ヾ,┤   ゙i_
  ‐ '              〉‐-    | / /\ .|o | /ヽ/(′    ∨     \
‐--─ ──-r、___-、    /ー_     {(   '´>、! /ヽ/       |\       \

456 :Be名無しさん:04/01/09 20:05
なんかよくわかんねーんだけどさー?
やたらOS開発を潰したがってる変な人が
数人いるよね?何?挑戦の人?

457 :Be名無しさん:04/01/09 20:10
>>456
そんなんでageんなや。
数人と言うか、せいぜい一人か二人が自演で回してんだろ。
大体の香具師はニヤニヤしながら生暖かい目でヲチしてる。


458 :Be名無しさん:04/01/09 21:05
もちろん某氏の別人格の仕業です

459 :Be名無しさん:04/01/09 21:14
そうか、実はKが……。

460 :Be名無しさん:04/01/09 21:20
ライバルは技術力で潰す!!!

461 :Be名無しさん:04/01/09 21:36
>>460
お前さり気に弄られキャラだな。

144 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)