1 :
( ´ -`) :
03/02/26 23:52 いっちょOSでも作ってみようかな。
2!ヽ(`ー´)ノ
4 :
Be名無しさん :03/02/26 23:58
4
5 :
( ´ -`) :03/02/26 23:59
PC用の32ビットプリエンプティブマルチタスクな保護OS。 APIは作りながら決める。 ファイルシステムはFATがベター。 デバドラは出来たらBIOSでやりたい。 取り敢えずはこんな感じでかな?
>>5 > APIは作りながら決める。
仕様は最初に決めるべし
> ファイルシステムはFATがベター。
ファイルシステムもテメーでつくてミロ
7 :
( ´ -`) :03/02/27 00:11
8 :
( ´ -`) :03/02/27 00:16
>仕様は最初に決めるべし 初心者にとってそれは意外と難しいです。最初にちゃんと仕様を決めても、 いざ実装する段階になって困難どと気付いたりとか。 >ファイルシステムもテメーでつくてミロ 習作だから出来るだけ手っ取りばやいのがいいかなと思ったんだよぅ。
9 :
( ´ -`) :03/02/27 00:19
今からコード書いてきます。
ショシンシャがOS作るってか はらいてーぜ VBあたりでちまちまあそんでな
11 :
( ´ -`) :03/02/27 02:00
ブートしました。 さてどこにアプしようか。
12 :
( ´ -`) :03/02/27 02:18
13 :
( ´ -`) :03/02/27 13:56
そろそろ名前を決めときたいんだが良いのが思い付かん。 完成時はNWSOSのGUI無しバージョンみたいな感じに成る予定。 アイデア求む。
14 :
Be名無しさん :03/02/27 14:32
どー見てもAさんか夜さんだな。
Aさんだったら楽しみだな…
ということは大学受かったということだよな。おめでとう!
いえ、わたしはACではないハズです。 彼は昨日本郷で名誉の戦死を遂げられました。 ご冥福をお祈りします。合唱。
坂研狙ってたのか…勇者だな。
22 :
( ´ -`) :03/02/27 22:40
23 :
( ´ -`) :03/02/28 02:54
25 :
Be名無しさん :03/02/28 10:53
こんなもんだれかDLするとおもってんのか おめでてーな といってあげてやる
>>1 さん
ボクは応援してるyo ガンガレ!!
/join #osdev-j
>>25 たしかにDLするやつはあんまりいないだろうな。
少なくとも今までのどの「2ch発OS」より良く出来てるが、
いかんせん地味だからな。まぁ、それは仕方ないことだ。
>>26 ありがとー
/*** 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; };
/*** 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_
/*** 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);
/*** 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_
/*** 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
/*** 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;
/*** 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;
/*** 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;
/*** 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_
/*** 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'
/*** 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;
/*** 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;
/*** 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;
/*** 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_ */
/*** 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_
/*** 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_
/*** 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. */
/*** 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
/*** 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;
/*** 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;
/*** 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;
/*** 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 */
/*** 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 $ */
/*** NoName\include\sys\queue.h ***/ /* *キュー操作ライブラリ * * このキュー操作ライブラリでは,キューヘッダを含むリング構造のダブル * リンクキューを扱う.具体的には,キューヘッダの次エントリはキューの * 先頭のエントリ,前エントリはキューの末尾のエントリとする.また,キ * ューの先頭のエントリの前エントリと,キューの末尾のエントリの次エン * トリは,キューヘッダとする.空のキューは,次エントリ,前エントリと * も自分自身を指すキューヘッダであらわす. */ #ifndef_QUEUE_H_ #define_QUEUE_H_ /* * キューのデータ構造の定義 */ typedef struct queue { struct queue *next;/* 次エントリへのポインタ */ struct queue *prev;/* 前エントリへのポインタ */ } QUEUE;
/*** 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; }
/*** 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 に空のキューを指定して呼び出してはならない. */
/*** 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_ */
/*** 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)
/*** 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; };
/*** 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_
/*** 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_
/*** 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_
ここまでNoName\include\sys終了。
61 :
Be名無しさん :03/02/28 15:59
ソースに興味が出てきたヤシは
>>23 のリンク先をどうぞ。
荒らすならもっとおもろいの考えろやデブヲタヒッキーども
63 :
Be名無しさん :03/02/28 16:33
頑張れよ〜 > 1
>>22 >プロセス起動まであと一歩。
>24時間以内にはユーザモードでプロセスを起動させたかったんだが残念。
>>23 >ページングをオンにしてみた。
>後はプロセス固有空間にメモリを割り当てELFを読込むだけ。
ファイルからどうやって読むんですか?
ファイルシステムは? FDD/HDD からのドライバは?
「ページングをオンに」して、ページテーブルは作ってますか?
>>65 なにが気に食わないのか。
へんな人…。
#荒らしを放置できなかった自分に反省します。
#以上、消えます
67 :
Be名無しさん :03/02/28 19:06
NoName pagin oncreate init taskkore dake sika denaikedo iino?
ソースがOSらしくて(・∀・)イイ!! 開発速くて(゚д゚)ウラヤマスィ...
ELFについて調査中。
>>61 大量コピペは( ゚Д゚)ゴルァ
>>65 >ファイルからどうやって読むんですか?
GRUBにカーネルとは別にモジュールをロードする機能があるので、
ファイルシステムが出来るまではそれを使います。
>「ページングをオンに」して、ページテーブルは作ってますか?
CR3をセットしてない状態でもPGフラグをオンに出来るのでしょうか?
>>67 正常な動作です。まだ開発初期なのでデバッグプリントしか表示出来できません。
そのうちMGLか何かでも移植すると面白くなるかも。
>>68 >開発速くて(゚д゚)ウラヤマスィ...
今のところ昔書いたコードからコピペしてるからです。
多分デバドラとファイルシステムに入ったら速度落ちます。
ま、ともかくがんばってね。
OSKitとかってのは使えないの?
72 :
( ´ -`) :03/03/01 01:28
73 :
Be名無しさん :03/03/01 03:47
>>72 bochs つかってみたら?gdbと連携すると超強力。拍子抜けするくらい。
74 :
Be名無しさん :03/03/01 06:55
76 :
Be名無しさん :03/03/01 14:03
age.sf.jpに登録したら?
>>73 P120のマシンを使ってるのできついです。plex86の方が早いらしいのですが、
デバッグをサポートする機能があるのかどうかわかりません。
一応二つとも試してみます。
>>76 う〜ん、今の段階ではあまりにもヘボすぎて登録するには気が引けます。
>>77 まだ、起動に何秒もかかる代物じゃないんでしょ?
バグが取れるならエミュレータで5分とかかかっても構わない気がするけど。
実際そんなにかからないだろうし。
79 :
( ´ -`) :03/03/01 23:12
80 :
YAHOO!を無料で使用する方法!!! :03/03/01 23:25
**** YAHOO!BBのユーザーへの特報!!! ****
今YAHOO!BBでADSLを利用されてる方。
月額料金を無料にできる方法をお教えします。確実な方法です
し方法も一つではなく何通りお教えしますので、ヤフーbbのユ
ーザーである限り料金発生なくずっと使えます。
もう、2ちゃんねるを見た何人かのラッキーな方がすでに無料
で使用して頂いております。
興味のある方は以下のメールアドレスに連絡ください。
料金をとめる方法を少しの謝礼でお教えします。
[email protected] [email protected] よろしくお願いします。
81 :
( ´ -`) :03/03/02 04:14
82 :
( ´ -`) :03/03/02 04:15
明日はPITを使えるようにする予定。そのためにはIRQ周りをなんとかせねば。 そしてそれが終ればラウンドロビンでスケジューリング出来るハズ。 だんだんOSらしくなってきました。今が一番楽しい時期かもしれません。
オナニースレ
そろそろ名前をつけてくれぃ
ひそかに期待・・・
>>84 そうします。
>>85 取り敢えずgikoというのはどうでしょうか?
>>86 ありがとうございます。
気が変わってGUIの実装もしようかなと思っているので、
当初考えていたより結構面白くなるかもしれません。
OS作ったら神!GUIについては WindowsとかマックとかLinuxとかは、いかにデスクトップをゴテゴテに するかを競っているかのように見えるが、それが終わったらどこへ向かうんだろう。 ある程度パソコンがわかるようになると途端にやることがなくなるよね。 パソコンって。自分だけかもしれないけどいかにシンプルでわかりやすい インターフェイスにするかってのを目指してほしいです。
ライセンスの取り扱いはGPLでよろしいですか?
>>89 environmentという意味でのOSを新しく作れたら神でしょうね。
MacとかTRONとか、あとUNIXなんかを作った人達は本当に神だと思います。
一方私なんかはせいぜいUNIXをパクったカーネルを書く程度です。
でも、いつかは神になりたいです(w
GUIについては、そうですね、出来るだけシンプルかつ柔軟性に富み強力な
ものが理想なのですが、そうすると全く新規に創造しなければいけなくなっ
て大変ですから、今回はまずは何か既存のシンプルなものを移植するところ
から始めたいと思います。
>>90 私が書いた部分に関してはPDSです。
kernel/printf.cとかinclude/sys/queue.hは他から流用したものなので
それぞれのソースファイルの先頭に書いてあるライセンスが適用されます。
printf.cだとGPL。queue.hだとTOPPERSスタイルライセンスですね。
なんか2ch見てると OSのでき = GUIのでき みたいな書き込みが散見されるんだけど アプリからは画面モード切替とフレームバッファのポインタさえ取得できれば十分な場合が多い ゲームなんかだと自力描画で独自GUIを実装するほうがフツーだとおもう。 widget setなどいわゆる「GUI」がほしけりゃ、microswindowsやらPicoGUIやらDJGPP用各種ライブラリやら ライブラリレベルでどーにでもなる ...というのはOSがグラフィックを管理してくれなかったDOS時代のジジイの世迷いごとでしょうか。
>>92 >OSのでき = GUIのでき
>みたいな書き込みが散見されるんだけど
そういう観点で評価され、中身がクソでも大ブレイクしたのが
初期のMacOSやWin95ですからね。重要なんでしょう。
ユーザーの観点から見るとそうなる。
業務で使うときなど、OSがGUIを縛ることで、DOSの頃に比べ色々な
アプリの操作性の統一が進んで使い方の習熟や「覚えていられるか」が
楽になったのが非常にありがたい。(人件費コスト等)
#半年さわらないと使い方初心者に戻されてしまうMARKとかSTAR-CDは、、、
仮に0からOSを作る場合、POSIXとかの制約なしで、変えた方が便利な部分はなんだろう?
一言コメントしたいのは、このソースは非常に綺麗だ、ということです。 特にそう思ったのは、core.S の dispatch ルーチンの単純さです。 今後もこの調子で成長できるのであれば素晴らしいですね。
このソースで、"QUEUE"の部分は面白いです。 普通、リストやキューを使いたいときは、リストクラスの方が 「核となるデータを取り込む」か「核となるデータのポインタを持つ」 のが一般的だと思うのですが、このソースだと、逆さまに核となるデータ の一部(メンバ)に、キューの前後リンクポインタを持たせてしまってる んですね。単純だけど、面白いやり方ですね。 もしかして、私が常識知らずナだけで、一般に良く使われていたり?
Windowsプログラムを流行出した頃から、本屋でよく見かけるC/C++プログラ ム中の関数名や変数名が、単語の区切りを大文字にする命名規則に従うものが 多くなった。 しかし、Cの伝統的なスタイルは、恐らく単語をアンダースコアで区切る ものだった(しかも省略形も多かった)。 聞いた話によると、「小文字の名前」は全く理由はわからないが、 人間には「見やすい」らしく、C言語が持てはやされた理由の一つだと も言われているらしい。 ちなみにこのソース、ほとんど小文字のアンダースコアスタイルが 用いられているが、単純に見やすく思う。ローカル変数や引数はやはり全部 小文字がいいのだろうか?
struct Hoge { int huga; Hoge *next,*prev; }; Hoge* list_head = NULL; <後ろ頭>y-~~ のようにやるのは定石のような。
100 :
Be名無しさん :03/03/03 19:03
予定として、シェルがうごくのはいつごろ? まずはお約束としてbashとgccね。
>>99 それとは違います。
struct QUEUE {
QUEUE *prev;
QUEUE *next;
};
struct MySomeData {
char name[16];
int age;
QUEUE queue;
};
見たいな感じで、キューを操作するときは、queue メンバに対して
独立ライブラリでやってるのが面白く思うんです。
task.h の task 構造体を見てみて下さい。 (#101のMySomeDataは間違いで、QUEUEメンバは、先頭にあります。)
>>102 今まで、誰も叩いた事は無いです。
単に技術的な乾燥を率直に言っただけです。
この人の場合、技術的に優れているので、誉める所しかないだけの
話です。
<後ろ頭>y-~~ winnt.hのLIST_ENTRYと全く同じですね。
>>102 いい感じで話が進んでるんだから余計なこといわんでよろしい。
( ´ -`)さんはLinuxの人?それともBSD系?
Gikoのビルドができませんヨ@MinGW
>>109 そうっぽい。あとfd/kernel触れないとブートすらできない
>>97 よくつかわれてまつ。お約束でつ。コレはToppers由来のようでつがBSDでも(たぶんlinuxでも)同様でつ
メンバが先頭にあるのもお約束でつ。
もれはC++よくしんないけど、こーゆーの「侵入型」っていうんでちたかね?
アルゴリズムやデータ構造って、勉強しないと、どんどん先に進んでるような 感じがします。イタタ
>>100 gccはともかくbashはきついんじゃないでしょうかね。
cursesとfork&execに依存してるので、そういう機能を実装するか、依存部を分離する必要がある。
unix互換を目指さないんだったら不毛な作業だ。
>>94 DOSあがりのもれ的にはposix系のfork&execつーのが激しく疑問。
ほとんどの場合、fork&execで別プロセスイメージを実行することの方が多いはず。
forkで同一プロセスのコピーが役に立つのは一部のサーバだけで、そっちのほうが特殊ケースだと思う。
MMUありだとCOWマップの作り直しだけでいいとはいえ、ソレすら無駄。
vforkなんか作るくらいならspawn系を作れと小一時間(略)
>>113 正確にはbash->readline->curses
おおっ、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ヶ月くらいかなと思っています。
>>116 正直、gikoは止めてほしい。
NoNameって名前かっこよくない? 名無しってことでしょ?
もしくはOS名は後からでもいいんじゃ?
プロジェクト名を決めてその中でOS名を決めるとか。
もちろん、プロジェクト名がOS名になってもいいし。
#勝手な意見でスマソ。テクがないゆえ・・・。
>>117 ちょっと変形して海底二万里の「ネモ」とかどう?
たしか、名無しって意味だったとおもうけど。(単行本を手放したので確認不能だけど)
タスク生成のシステムコールの実装を見直し中。
今の実装では新しいタスクのアドレス空間の構築や実行ファイルの読込みは、
生成元のタスクがやっていますが、これだと生成元のタスクは自分のとは別
のアドレス空間にアクセスしなければならず面倒なので、これを新しいタス
ク自身に全部やらせるようにするつもりです。これはfork&exec実装への布石
でもあり、これ自身spawn系のシステムコールのサポートでもあります。
>>118 ありがとうございます。便利になりました。
>>119 良い案ですが「ネモ」はガンダムのやられ
メカでもあるのでちょっとダメです(;´д`)
gikoもどうかという感じなので、しばらくの間は
「NoName(仮)」ということにしときます。
「のなめ」か・・・
125 :
Be名無しさん :03/03/04 15:51
3月3日or4日版はないわけ? 画素ばれ。
>>116 >で、gccとかのGNUツールが動くまでの期間ですが、プロセス管理とメモリ管
>理については現状でも粗削りながら動いていますので、あとはデバドラとファ
>イルシステムにどれだけかかるか次第でしょう。この辺は経験が無いので実
>際に作ってみないと何ともいえませんが、根拠無しの希望的観測では2〜3ヶ
>月くらいかなと思っています。
2〜3ヵ月か。それは楽しみ。「Monaの開発もNoName(仮)上でできます!|」|
なんてネタになりそうですな。
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
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>1 ガンガレ!!!!!!!!!!!!!!!!!!!!!!!!!!
感動。
感感動動
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 とした。
>132 少なくとも動作波形はあんまり関係ないような。 まあジッタとかには注意せにゃならんかも。 つーか、トラ技のバックナンバになんかいい情報ってあったっけか。 KBCとかUSBとかNICの情報とかならあったかな? でもC級出版の本、特にトラ技については 細かい数値やらに致命的な間違いもあったりするからして、 参考程度に留めておいてデータシートなりなんなり落としてきた方が よさげだと思われ。 英語圏のサイト探せば負けず劣らずな資料もイパーイあるし。
135 :
Be名無しさん :03/03/07 14:49
136 :
Be名無しさん :03/03/07 15:00
Shellってなまえだけで、実際にははたらかないのかよをーゐ。
>>133 initやshellのパスはfd0にハードコーディングされてるので、
それ以外の場所に置く時はソースを修正する必要があります。
kernel/main.cとinit/main.cの該当部分を修正してください。
もっともinitとshellは起動メッセージを表示するだけなので
動かしたところであんまり面白くないですが。
>>134 データシートと英語・・・道は遠い。
デバドラ書ける人ってどうやって勉強したんだろ。
まぁ、いざとなれば他のOSからコピペすれば良い
ので全然まったくもって問題無いんだけど。
>>136 execの動作確認用に作ったダミーです。
でも将来的にはbashに化けるハズ。
今気付いたんだけど
>>133 みたいにGRUBでrootコマンドを使
えばソース中にデバイス名をハードコーディングしないで済
むんですね。もっとちゃんとマニュアル読んどくべきだった。
撃つ出汁脳。
030308age
面白いなと思ったのは、signalハンドラに下りる時に、カーネルスタックを 積み重ねずに、前のスタックフレームの内容をTask構造体内部にコピーし、 sigreturn()で、復帰しているところです。 私だったら、カーネルスタックに積み重ねてしまいそうですが(高速そう なので)、この方法だと、スタック容量がパンクしないかチェックしなく てもいいですし、TSSのESP0も固定のままでいけるので簡単になりますね。 TSS-ESP0を変更するのは色々と煩雑になりますし。
0000 0000 - 7fff ffff あたりは、線形アドレス = 物理アドレスの 恒等写像にしてるのですか? そして、カーネルもそこに置いている? もしそうなら、面白い実装だと思いました。 ああ、でもこれだと、V8086モードは複数独立して持つ事は出来ないかも しれませんね。
> 面白いなと思ったのは、signalハンドラに下りる時に、カーネルスタックを
>積み重ねずに、前のスタックフレームの内容をTask構造体内部にコピーし、
>sigreturn()で、復帰しているところです。
単純さでは良い方法じゃないかなと思っています。
でも、これではハンドラのネストがやりにくく、UNIXとの互換
性が取れませんので、今日の作業でスタックフレームをユーザ
スタックに保存するように改め、sigreturnもハンドラからのリ
ターンで自動的に呼ばれるようにしました。個人的にはシグナル
ハンドラは時代遅れだと思うので、あんまり乗り気では無かった
ですけど。
> 0000 0000 - 7fff ffff あたりは、線形アドレス = 物理アドレスの
>恒等写像にしてるのですか? そして、カーネルもそこに置いている?
前半2Gはそのまま物理アドレスと対応していて全タスク共通です。
カーネルは線形アドレス=物理アドレス=0x100000にロードされ
そこで動作します。後半2Gはタスク固有の空間で、ディスパッチ
によって切り替わります。
> もしそうなら、面白い実装だと思いました。
そうでしょうか。
どの辺がそう感じられたのでしょう?
> ああ、でもこれだと、V8086モードは複数独立して持つ事は出来ないかも
>しれませんね。
ううっ、そうですか。
実はまだV8086についてあまり調べてません。
ただ、これは面白いテーマだと思うので是非挑戦してみたいです。
>>144 GUIの見た目だけはMacOSXを超える様にする予定です(w
こんばんは、ひげぽんと申します。 1さんのOS大変参考にさせていただいておりますm(__)m それにしても1さんはすごいです。 すべてにおいて、見習うところばかりです。 OSの知識、実際のコーディング等々。。。 これからも是非がんばってください。
わたもちです。 開発スピードも速いし、どんどん実装が進んでゆく... ソースも拝借して、勉強しています。 MacOSX並みのビジュアルなGUIの作成期待しています! 私も、早くGUI実装までいけるように頑張っていきたいと思います。
失礼しました。寝ぼけていたようです。これだけのソースを書ける方なら 以前作成されていたOSもかなり作りこまれてあったのだろうなと思います。 貴方のOSは驚くほどのスピードで製作が進まれているようで、うらやましい限りです。 日々忙しいと思いますが、OS製作頑張ってください。
>>145 >> もしそうなら、面白い実装だと思いました。
>そうでしょうか。
>どの辺がそう感じられたのでしょう?
二つ理由があります。
一つ目は、#143の最後にも書きましたが、独立したV8086モードタスクを
複数走らせるためには、0000 0000 - 0001 FFEF の部分を必ずタスク毎に
分離する必要があるから。
二つ目は、共通空間無いでもDISKと連携した仮想記憶メモリを置くためには、
「恒等写像」ではない真の意味でのページングも行う必要があるだろうから。
物理メモリの容量分を必ず恒等写像にしなければならない仕様だと、
例えば、2GBの物理メモリーを搭載した機種でそれをやると、共通空間
にはページングを行うためのアドレス空間が完全になくなってしまいそう。
ソースが5000行超えた。 こんな長いプログラム書いたのは初めてだな。 >一つ目は、#143の最後にも書きましたが、独立したV8086モードタスクを >複数走らせるためには、0000 0000 - 0001 FFEF の部分を必ずタスク毎に >分離する必要があるから。 う〜む、そうですか。 ちょっとだけ調べてみたのですが、V8086モードをまともに やろうとするとかなり難しそうなので、BIOSドライバは当分 諦めようかと思います。 >二つ目は、共通空間無いでもDISKと連携した仮想記憶メモリを置くためには、 >「恒等写像」ではない真の意味でのページングも行う必要があるだろうから。 >物理メモリの容量分を必ず恒等写像にしなければならない仕様だと、 >例えば、2GBの物理メモリーを搭載した機種でそれをやると、共通空間 >にはページングを行うためのアドレス空間が完全になくなってしまいそう。 共通空間が必要になった場合は、タスク固有空間を3G〜4Gにして、 空いた2G〜3Gを共通空間に割り当てようと考えています。 恒等写像をする場合どうしても物理メモリ量が制限されますが、 それよりも構造が単純な事の方がメリットが大きいと思うので、 制限は仕方が無いとあきらめるつもりです。
>>151 >共通空間が必要になった場合は、タスク固有空間を3G〜4Gにして、
>空いた2G〜3Gを共通空間に割り当てようと考えています。
ご承知のとおり、線形アドレス「空間」自体は、どう頑張っても4GBまで
なので、もしタスク固有空間を4GBにしてしまうと、共通空間用には何も
残らなくなってしまうと思うのですが、その辺、どういうことなのか良く
分からないので、詳しくご説明頂ければと思います。
PAE,PSEを用いると物理アドレスが36BITに拡張され、実メモリを64GBまで
扱えるようになりますが、相変わらず線形アドレスは32BITで4GBのままです。
つまり、CR3を固定した場合、同時に扱える物理メモリは4GBより多くは
ならないと思います。
書き方が悪かったです。 2G〜3Gは線形アドレスの0x80000000〜0xbfffffff、3G〜4Gは線 形アドレスの0xc0000000〜0xffffffffを表しているつもりでした。 しかし、OSを作り始めてわかったのですが、線形アドレスの4Gと いうのは意外と狭いものですね。64bitのCPUが当たり前になれば OSの作り方もまた代ってくるのかもしれません。
メグタソは16Mだけど広い広い(;´ω`)
>>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 : タスク固有空間
という感じですね。
別に難癖をつけているわけではなく単に技術的な側面から検討したい だけなのですが、共通空間を必要としない場合、タスク固有空間は 2GBあるのに、共通空間を必要としたら突然半分の1GBになってしまう ということですよね。これは、アプリケーション・プログラムにとって 余り望ましいとはいえなく有りませんか。 >しかし、OSを作り始めてわかったのですが、線形アドレスの4Gと >いうのは意外と狭いものですね。 その通りだと思います。現代的なOSでは、メモリ"空間"は、 「記憶するための領域」としてだけでなく、アクセスするための覗き窓と しても多用されるので、不足した場合ににっちもさっちも行かなくなる 恐れがあり、どうしても伸張に扱わないと怖い部分だと思います。
>>154 メグタン家出中?
>>155 はい。そんな感じです。
>>156 ううっ、わかりにくい書き方で度々ゴメンなさい。
「必要になった場合」というのは、開発が進んで全タスク共通空
間を必要とするような機能を実装する場合、という意味でした。
細かい最適化について考えてみました。 普通システムコールはソフトウェア割り込みを使って、あらかじめ 決められている1つか2つのゲートからカーネルモードに移行し、 レジスタなどに格納されたシステムコール番号によって個別のルー チンへ分岐すると思います。OSASKスレでも話題になっていました が、ジャンプテーブルを使うにしても分岐命令を使うにしても、こ のシステムコールの種類による振り分けには絶対にオーバヘッドが あるわけです。で、思い付きました。IA32の場合割り込み番号は 256個あり、そのうちインテル使用が32個、IRQに16個として200個 以上もあまっています。そこで、一つの割り込み番号に一つだけシ ステムコールを対応づければ、分岐のオーバヘッドは無くなります。 我ながら良いアイデアです。でも、いくつかのOSのソースを読んだ 事があるのですが、何故かこういう事をしてるのはありませんでし た。なんでだろ〜、なんでだろ〜。もしかしたら、本気でチューニ ングしている商用OSでは当たり前のように使われているのかな。
本気でオーバーヘッド考えるならSYSCALLとかSYSENTER使いませう・・・
たぶん、振り分けにかかる時間が、システムコールを実現するコードの実行時間と比べて、 少ないためでないでしょうか? システム値(物理メモリの搭載サイズ等)を取得するぐらいなら、 振り分けの時間はそれなりのオーバーヘッドになると思いますが、 単純に256個の値と順番に比較しているわけではないので、 ほとんどのシステムコールでは無視できるぐらいではないかなと思います。 ジャンプテーブルについては、昔はCPUの実行に比べメモリの読み込みが早かったので、 ジャンプテーブルは使える場面は多かったと思いますが、 今はメモリの読み込みはCPUの四則演算、比較等の実行に比べ相当時間がかかるようなので、 逆に遅くなると思います。
>>158 その2つの実装法は、多分ほとんど性能は変わらない。
割り込み自体のコストや、システムコールの本処理に比べたら、
振り分けなんて微々たるコスト。
ジャンプテーブルをキャッシュに固定or追い出されにくくしてみる方が面白いかもしれない。
もしくは、ジャンプテーブルをユーザアプリ側のランタイムシステムに渡すとか。
実装できるって素晴らしい
164 :
Be名無しさん :03/03/11 15:27
>>163 このばーじょんからBochsでうごかなくなった。鬱だ...
MakeはVine Linux2.6r1でやったんだが...
できれば、あんたのところで、正常に動くGRUBいりフロッピーベタイメージ作ってくれないだろうか。
そうしたらccも使えないようなマシンの香具師の機械でも動くし。
167 :
Be名無しさん :03/03/12 13:27
GRUBでいままでとおなじコマンドうったのに、画面がまっくろのまま進まなかった。 うごいた。あんがと。 をーゐ。
168 :
Be名無しさん :03/03/12 15:05
暇なんでwindowsみたいだけど2chネラー向きのOSつーのを 作ってみるわ。もちろん2chネラーネイティブな。少しまちなー。
テストプログラムを実行させて、タイマー割り込みが起きた数を数えることで、 どこの処理に時間かかっているか実際に計測して、ネックとなるところを チューニングアップが一番確実かなとか思っていたりしますがどうでしょう?
>>169 gprofとか動かんかな
...無理か
>>169 ICEつなげ。
ソフトでソフトの計測をすることは、不確定性原理により、正しい現象を観測できなくなる。
スラッシング発生中のようなシビアな状態であればあるほど顕著。
例:スラッシング中に計測タイマ割り込みが状況を悪化させる。
頭の中の妄想デバッグで当面しのげないかな?
なら、ICE繋いだ時点でCPU内部で起きてる現象を測定する事はかなわなくなると…
>>172 ICEにもいろいろある罠。厳密な定義はさておき。←漏れも自分で使ったこと無いし。
CPUのソケットにぶちこんで、CPUをエミュするかどうか。
ROM/RAMまでエミュできて、ホスト側で観測できるかどうか。
ブレークポイント注入型の中途半端なやつもあるよな。
PC/ATアーキテクチャ(?)の場合、チップセットからむのでかなり困難ではあると思うが。
スレ違いだが、
http://www.labs.fujitsu.com/techinfo/linux/ こういうアプローチしてる暇人もいるわけだが、次期カーネルでの採用は
見送られたりするしな。
とりあえずは、妄想デバッグでもいいんじゃないかと。
>>173 用途から行くとCPUエミュ出来る奴じゃないと無理じゃないかな。
その手の奴なら、そういう機能がはいってるはず。
最近のCPUに入っているパフォーマンスカウンタでも出来なくは無いと思うが。
>>171 GetTickCountみたいなシステムコールを用意しようかなと思っていたので、
タイマー割り込みの数をカウントすれば実装できないかなと考えていたから。
なんとなく、割り込みでカウントすれば、時間が測れないかなと思っていただけなのですけど...
実際に使われていたとは思いませんでした。参考になるアドレス有難うございました。
>>173 ICEの説明有難うございます。そんなものがあるとは知りませんでした。
私はアプリケーション作りに支障が出ない限りは、あまり高速化は目指すつもりはないです。
>>176 >実際に使われていたとは思いませんでした。参考になるアドレス有難うございました。
漏れも今回見つけて、ビクーリ。
>ICEの説明有難うございます。そんなものがあるとは知りませんでした。
Windowsネィティブだと、SoftICEちうのがあるよ。
MS純正のDDK+WinDbg&マシン2台でもカーネルモードのデバッグはできるがな。
(^^)
> GetTickCountみたいなシステムコールを用意しようかなと思っていたので、 > タイマー割り込みの数をカウントすれば実装できないかなと考えていたから。 てか、↑じゃない方法で、GetTickCount ってどうやって実現するのかな? タイマ割り込みカウントか RTC の補正くらいじゃないかと思うんだけど。
>>179 わたタンの考えの流れを推測してやれよ。
・カーネルのパフォーマンスチューニングどうやれば?
という背景があって、
・汎用タイマーそろそろ実装せねば
と考えているときに
・タイマ割り込み回数をカウントすることで時間計測することを思いついたor見つけた
で、
・これはカーネルのチューニングにもツカエルのでは!?
と思い至ったのではないか。
181 :
Be名無しさん :03/03/14 13:06
age
御無沙汰しておりました。
これからは開発ペースがちょっと落ちるかもしれません。
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週間以内でやりたい。でも、カーネルスレッドのサポート
とかでディスパッチャも含めかなり書き直すつもりだから厳しいか。
一応それ以降のおおざっぱな予定も書いときます。 ホストでFAT?ファイルシステムを開発。 FDDもしくはIDEのドライバを書く。 ファイルシステムをNoNameに乗せる。 システムコールの細かいPOSIX準拠。 ユーザアプリ用のライブラリを整備。 GNUツールの移植などユーザ環境を整備。 NoName自身をNoName上でコンパイル出来る様になったらVersion.1.0としてリリース。 2〜3ヶ月でここまでやりたい。
本当にできそうだな。ガンバ!
ところで、「カーネル・スレッド」と言う言い方には、歴史的な背景がある だけで、Windowsでは、単に「スレッド」と呼ばれるものと等価なんですよね? 一応、ネットでちょっと調べた結果を書いておきますので、間違っている箇所が あれば指摘してください。 ----------- (1)「カーネル・スレッド」と言う言葉は時と場合によって異なる意味で 用いられるらしく、ある種の混乱が生じる場合がある。 (2) 歴史的に UNIXでは、いわゆる「スレッド」がなかったので、アプリ ケーションが勝手に「スレッド」相当の機能をユーザーモードで実現した。 この実現方法は良く分からないのですが、 仮定:signalハンドラからの戻り番地として、signalを受け取った時点の ユーザーモードでの実行アドレスが書かれている。 1. signalハンドラでタイマーイベントを受け取る。 2. 仮定により直下のスタックから、直前のコンテキスト(実行アドレス)が 取得できる。 3. longjmp(), setjmp()機構と似た手法でコンテキスト・スイッチを 実現する。 このようにして(無理やり)実現したスレッドを「ユーザー・スレッド」 と呼んだ。 (3) カーネルが管理し、スケジュールできるタイプのスレッドを、(2)と 対比して「カーネル・スレッド」と呼ぶようになった。 (4) Windowsでは、当初から(3)のスレッドがあったので、単に スレッドと言えば(3)のスレッドの事を呼ぶようになった。
ちなみに、Windowsでも、UNIXでも、基本的に メモリ空間とファイルディスクリプタの分離単位を「プロセス」と 呼んでいると思います。 そして、Windows/Linuxでは、 実行コンテキスト(現在の実行番地、スタックポインタ、全レジスタの値)、 スタック を持つ単位をスレッドと呼んでいると思います。 (本家の)UNIXでは、上記の「スレッド」のことを「カーネル・スレッド」と 呼ぶらしい(?)。 また、Mach OSやNWSOSでは、上記「プロセス」のことを「タスク」と呼び ます。Intel IA32の「タスク」の定義も、ほぼ、これに相当すると言って いいと思います。 結果として、マルチ・タスクとマルチ・プロセスは私の解釈では今のところ 同義だと思っています。
>>186 >結果として、マルチ・タスクとマルチ・プロセスは私の解釈では今のところ
>同義だと思っています。
組み込みだと、ひとまとまりの仕事という意味でタスクを使ってる感じかなぁ。
でも最近はLinux系から流れてくる人も多くて、やや現場は混乱してるのかも。
昔でいうモニタプログラム(sharpのクリーンコンピュータで言うところの電源入れたら立ち上がる、
対話型のブートローダ。GRUBのできそこない見たいなやつ)
が発展してマルチタスクモニタとか、リアルタイムモニタとか呼ばれてたみたい。
大手だと、UNIX互換のモニタを持っていたりしたなぁ。
それでもタスクと呼んでいた。
この10年で一般化したRTOSは、多くが仮想メモリ非対応(マイコンにMMUが無かったのが主原因)
で、今時だと、スレッド型とか呼ばれたりする。
例えばiTRONなんかではスレッドコンテキストに相当するものをTCB(タスクコントロールブロック)
と呼んだりするしなぁ。
まぁ、大昔の組み込みでは、手本にされたのが、360やVAX/VMSのようなので、
用語の混乱はそこら辺に原因があると想像しているのだけど、調べるひまが無いなぁ。
>>185 > 3. longjmp(), setjmp()機構と似た手法でコンテキスト・スイッチを
> 実現する。
WindowsではNT系だと、これはファイバとして搭載されてるなぁ。
コンテキストスイッチをユーザが全て制御できる手段として用意され散る模様。
オーバーヘッドがスレッドよりも小さいのでライトウェイトスレッドとか呼ばれるみたい。
コンテキストスイッチングのオーバーヘッドは、
プロセス>スレッド>ファイバ
となる。ファイバは1つのスレッドに属して、スレッドコンテキストを共有し、しかも
(そのスレッド内では)プリエンプションされないので、ファイバ間の排他処理の
オーバーヘッドも低減できる。親スレッド自体がプリエンプションされても
元のファイバに帰ってくる。
これを使えばプリエンプションのないRTOS風タスクのエミュが簡単にできて
便利。
>>188 ファイバってのは、NTにおけるユーザスレッドと考えていいのですかね?
>>189 ユーザスレッドの定義がわからんので困ったな。Lタンの言う
> (2) 歴史的に UNIXでは、いわゆる「スレッド」がなかったので、アプリ
と実装は近いと思う。プリエンプションの無いRTOSのタスクと近いかと。
あと、Windowsではデバドラなんかでkernel-mode thread objectが使えたりする。
ディスパッチャがuser-mode thread objectとは別ルールでスケジューリングする。
DDKからの受け売りだけどな。だから勘違いもあるかもしれん。
これをカーネルスレッドと書くと、混乱に拍車をかけそうだな。
>>190 >あと、Windowsではデバドラなんかでkernel-mode thread objectが使えたりする。
>ディスパッチャがuser-mode thread objectとは別ルールでスケジューリングする。
これと似た記述をUNIX系のドライバの書き方のページで見ました。
恐らくこれは、#185で書いた「カーネル・スレッド」の定義と全く違っていて、
混乱の元になるところですね(良く分からないですが)。
>>184 ありがとうございます。
>>185 この辺はまだ理解が足りないのでいい加減な事を書いてしまうか
もしれませんが、一応カーネルスレッドというのには二つの意味
があると思います。
まずはLightConeさんが書かれたような二種類の実装の対比です。
ただ、歴史的にはそんな感じかもしれませんが、現代的には状況
が少し違います。ユーザスレッドにも良い点はあり、スレッドを
ユーザモードのライブラリで実装するか、カーネルで実装するか、
はたまたその折衷をするかというのはそれぞれ一長一短があって
色々議論されてます(実はもう決着してる?)。こういうコンテ
キストで、ライブラリで実装されていているものを「ユーザ・ス
レッド」、カーネルで実装されているものを「カーネル・スレッ
ド」もしくはLWP(lightweight process)と呼ぶのではないのかと
思われます。
もう一つの意味では、カーネルスレッドというのはカーネル内での
雑用をさせるためのスレッドのことで、ユーザモード部分を持たず
カーネルモードだけで動作します。
ワタシが
>>182 で書いたのは後者の意味です。
>>186 ワタシは元々TRON系なので、「タスク=スレッド」と言う意味で使用
しています。ただ、混乱を招くので以降はスレッドで統一しようと思
います。
>>188 ファイバはユーザに見えるのかな。面白そう。
NTは結構先進的だから一度ちゃんと研究しとかなねば。
<後ろ頭>y-~~ 最近は2-level threadなんてのも登場してるけど。 # K:U=n:m (多くのOSはn=1) userland-threadはcontext switchingが軽い反面、 system callやmulti processingの並列性はnに限られてしまう。
出現の順番は プロセス→軽量プロセス(LWP)→スレッド と、思っていたのですが、探してみたけど何処にも書いてなかった。 ちなみに、SolarisのLWPはスレッドとは別物です。 少し調べてみましたが、 カーネルモード・ユーザモードのどちらで動こうともカーネルによりスケジュールされるものを Kernel-level thread カーネルによりスケジューリングされないものが、User-level thread この場合、Kernel threadというとカーネルモードで動くスレッドのことをさすっぽいです。 つまり、スレッド化されたカーネルで使われる用語みたいです。 また、Kernel-level thread、User-Level threadを単にカーネルスレッド、ユーザスレッドということもあるみたいで、 これが誤解の元かもしれませんね。 これら用語は、仕様として定義されてなければ、上記のような解釈をすればよいみたいです。
FYI: 「最前線UNIXのカーネル(ピアソン)」 より 第3章 スレッドと軽量プロセス 「軽量プロセス (lightweight process, LWP) はカーネル支援ユーザ・スレッド のことである。カーネル・スレッド機能に基づく高位概念機構である。したがっ て、システムはLWPを装備する前にカーネル・スレッドを装備していなくては ならない」 「メモ:LWPという術語は、SVR4/MPとSolaris 2.xの術語から借りてきたもの である。SunOSバージョン4.xでは、LWPは次の項のユーザ・スレッドを指し ているので、混乱がある。」
ド素人質問でスマソ カーネルモードスレッドって結局 スケジューリングをカーネルに委ねることでマルチプロセッサ(である場合)の 恩恵を受け易くするようなもののこと?
>>197 と言う意味の他に、もう一つか二つ別の意味があると言うのが、今までの
話の流れです。
>>192 >もう一つの意味では、カーネルスレッドというのはカーネル内での
>雑用をさせるためのスレッドのことで、ユーザモード部分を持たず
>カーネルモードだけで動作します
これは正しいの?おれはこんなの初めて聞いたけど。
スワッパーが実行コンテキストとしてのカーネルスレッドを
持っているからといって、スワッパーがカーネルスレッドな
わけじゃないよな。
それにプロセスに実行コンテキストが一対一対応してる古典的
UNIXにおいてもスワッパーのようなユーザーモードのない
プロセスをカーネルスレッドとは呼んでなかったと思うけど。
まあ呼び方なんてどうでもいいか(藁
>>200 機能は同じだけど、ピアソンの「最前線UNIXのカーネル」によれば、
カーネルスレッドはproc構造体とかuser構造体とか余分な物を省い
ててウマーって事らしい。
>まあ呼び方なんてどうでもいいか(藁
同意。
>>200 >まあ呼び方なんてどうでもいいか(藁
そうかなぁ。モノにできるだけ適切な名前を付ける、
あるいは既にある名前を借りて新しい概念を説明する努力は、結構重要だと思うけど。
漏れが不足を感じるのは、現実に即した適切な分類。だれか、太古の昔からやってるヤシ、
どっかにたたき台まとめてくれんか。UNIXオンリーとかは、なしな。←お前がやれ
>>202 >そうかなぁ。モノにできるだけ適切な名前を付ける、
>あるいは既にある名前を借りて新しい概念を説明する努力は、
>結構重要だと思うけど。
重要なのは否定しない。だけどそういったことの多くが不毛な
作業になることは、やる前から分りきったことだと思う。
こういった面倒で面白くないことは学者に任せておけばいいんだよw
やっぱりプログラマならデータ構造に集中したいね。
型名もこの際キニシナイ。構造が大切なんであって、名前などどうでもいい。
204 :
Be名無しさん :03/03/17 17:00
適切な名前がついてないとコミュニケーションがうまくいかない罠。 個人開発ならどーでもいいだろうが。
すまんうっかりあげてしまった
仕組みを考える香具師と名前を付ける香具師が分業しればいいだけな罠
>>203 >こういった面倒で面白くないことは学者に任せておけばいいんだよw
これには酸性。
>>204 >適切な名前がついてないとコミュニケーションがうまくいかない罠
漏れの言いたかったこと言ってくれた。あんがとよ。
>>203 >>207 >面倒で面白くないことは学者に任せておけば
そういうやつに限って後で他人のやることに難癖つけるんだよな。参るよ。
適切な名前は付いてるけど各流派の間で全く互換性が無いという罠だと思われ。
基本的にはプロジェクトマスタの言葉に合わせれば良かんべ。
んだべな
じゃそれで。
213 :
Be名無しさん :03/03/18 21:58
NoNameはlinuxを目指してるの?
>>213 というか、おそらくは、だいたいはUNIX(LINUX)ぽくなってしまう。
UNIXのOS構造はもはや時代遅れと言われてるけどな。。。
でも、習作用ではけっこういい勉強になる。
しかし、最初にUNIXぽく作ってしまったせいで固定観念に束縛されてしまう可能性大。
これが最も危険。
POSIXに準拠したシステムコールとか作るわけだから、 外から見るとUNIXぽいかもしれないけど、 中から見るとUNIXぽくはないかもしれない。 UNIXぽくないものってRTOSの他にはなにがあるんだろ。 UNIXぽいってどういうものかもよくわからないや。
おぉ、久しぶりにこの板来たら、なんか面白いスレが出来てるね。
VMSってメインフレームですね。 スパコン系には何がのってるのかとおもってEarthSimulatorを調べたら、 UNIXベースのSUPER-UXというOSがのってるとか。 ほかには、協調型マルチタスクとかもUNIXぽくないのですかね?
>>215 POSIXに準拠してて,かつ,UNIXぽくないOSって意味?
>>219 勘違いしてました。
POSIXってインタフェースだから、215のように思っていたわけで、
POSIXに準拠することがUNIXなわけですね。
GNU/Hurdは、どういう位置づけになるんでしょうか?
適切な名前でググればいくらでも関連情報が手に入るのに 新発明とカンチガイして自画自賛してイタがられる罠
222 :
Be名無しさん :03/03/20 22:46
>>223 ,
>>224 >コワイデス
既に似たような研究があるんなら、素直に教えてやれよ。
それを知らないんなら、ウザイだけだ。
整数論はまだまだ宝の山だろ。ガロアのおっさんだって、最初はトンデモ系
だったんじゃないのか?
その道の専門家でないなら、フーリエの論文発表をハァ?と
一蹴したラグランジュのようなおっさんみたいに偉そうに言うなヴォケが。
>>223 それよりあれはどういう意味なのか誰か教えてくれ。
あれは、それを証明すること自体に意味があるってことか?
定理自体は当たり前の話だよな。
>>226 どうせ効果的なメモリ管理とか考えてて理論から固めようってことじゃないの?
効率的アロケータの追求は結構なことですが 俺用語を乱発してはまるでK氏のよう
>>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
>>229 >が当たり前ですか?
2^nはAminで割り切れるので
等式全体をAの最小要素Aminで割れば
Amin/Amin=1になるわけで
>>23 >2等式全体をAの最小要素Aminで割れば
どの等式ですか?
>Amin/Amin=1になるわけで
この文章は、X/X = 1 と同じ内容ですね。ここから何が導けますか?
証明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)
『任意の非負整数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
>>235 >(2^(n-m)) * Amin = 2^n
この式自体は正しいのですが、Sum(B)の値が左辺に等しくなるような
Aの部分集合Bを選べることが自明ではないと思いますので、これだけ
では証明になっていないと思います。
#234より短い証明を見つけた方は、名前を明記して、私のBBSにでも お書きください。 今後、ここに沢山書かれても一々コメントできないと思います。
>>235 例えば、A={ 1, 2, 4, 8, 16} で、
(2^(n - 0) ) * 1 = 2^n
と言いたいんだろうが、{1]ばっかり使うのはありなの?
>>238 いやSum(A)/Aminの不要な1を取り除いていけば良いのだから自明かと思ったけど
証明になっていないね
自明の部分をまともに書いたら余計長くなりそうだ
Lさんの(ii)も 和が2^nになるB(p)が存在しなくてはならないから存在する といっているのように見えるのは気のせいですか?
>>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 に等しくなると言う論法です。
>>240 >和が2^nになるB(p)が存在しなくてはならないから存在する
数学的帰納法と背理法がまざってるだけだろ。
>といっているのように見えるのは気のせいですか?
で、おまいは何が言いたいんだよ。証明が間違ってると言いたいのか?
それとも他に同じ証明を知ってるのか?
同じ命題に対する証明であってもより違う方法で証明することには意味があるって、
わかってるよな?
>>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)
素朴な疑問なんですが、 2のべき数を足して、2のべき数にすることは可能なのでしょうか?
もしかして、 「2^n未満の2のべき数の集合Aにおいて、Sum(A) > 2^nならば」 と言ってるあたり、集合Aには重複する要素もあるということでしょうか? それなら納得。
証明をろくに見ずにカキコ
>>229 2^nを2^n以下の2のべき数の和と考えて、
その2のべき数の集合に
2^x(n > x >= 0)である何かを最低一つ加えれば
それが集合Aになるんじゃないのか?
これはもの凄い勢いで当たり前のことかと。
いや、なんか漏れが激しく勘違いしてるのかも知れんが。
>>247 えらそうに言っているが、
>いや、なんか漏れが激しく勘違いしてるのかも知れんが。
教えて欲しいなら、率直にそう言えばよかろうて。
>>246 冷静に見ると、
>>223-228 あたりがこのスレで引っ張り出したのが原因と思われ。
本人は、
>>237 >今後、ここに沢山書かれても一々コメントできないと思います。
と書いてる品。文句があるなら他のヤシに言え。
のなめ氏も休眠状態(スレに対して)みたいだし、いいんじゃ?
>>246 ご要望どおり、あちらのスレで返答しました。
252 :
Be名無しさん :03/03/21 21:38
スレ違いで『Beなんでも相談室』から移動してきました 質問なんですが。Windows2000正規版からアップグレードって作れますか? よかったら教えてください。
253 :
bloom :03/03/21 21:44
>>252 「Beなんでも相談室」にも書いてるなんてなんともリアルなネタだな。
ここもスレ違い。というより、板違い。Windows板に行けよ
2^nあたりは、相棒アルゴリズムっぽいけど、 実際のところどういう適用をしようとしてたんだろ。
>256 相棒アルゴリズム=buddyじゃないか? いや、さっきbuddy systemググって気付いたんだが。
>>257 すみません。相棒=Buddyです。
255をうけての256の発言でした。
すまんおれがわるかった 204を補足しただけなんだが
もう遅いよ。
数日後に重大発表の予感。
(・∀・) イジョウジサクジエンデシタ!
263 :
Be名無しさん :03/03/27 11:05
開発終了の予感。
しかし、哀れといえば哀れよのぅ、辻君。
これからもこういう事が良くあると思います。 しばらく姿が見えなくなった時はお察し下さい。
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のビルドに挑みまつ。
http://www.geocities.co.jp/SiliconValley-Cupertino/5940/NoName-030328.tar.gz >>270 で指摘していただいた問題を解決しました。タイマー
を使ってる部分にアホなバグがありました。実機ではタイミ
ングの都合かなにかでたまたま上手く動いていただけだった
様です。270さんに指摘していただかなければ、そのまま気
付かずに後でえらいことに成る(バグの混入と問題の発生の
間隔が開けば開くほどデバッグは困難になる)ところでした。
ありがとうございました。
それと、FATは大体見切りました。ホストのテストプログラム
でファイルの読込みが出来ます。後はロングファイルネームの
資料を見つければ完璧。
>>269 まだ開発初期なのでFDイメージの配布をやる気はあんまり無いです。
>>271 たぶんi386-elfが吐けるgccならどれでもOKだと思います。
でもちゃんとリンカスクリプトを書いていなくて、環境デ
フォルトのスクリプトを使うようにしているので、その辺
りで思わぬ問題が起きるかもしれません。
>>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);
vfsについて調査しています。実装が意外と面倒っぽいような気が。
FATを勝手に拡張してデバイスファイルを実現するって手もあるけど、
これは趣味が悪いのであんまり使いたくないし、さてどうしたものか。
>>275 完璧です。
initはシグナルハンドラをセットしてから子プロセスを生成してスリープする。
子プロセスではinitにkillでシグナルを送る。
initではスリープが解除されてシグナルハンドラが起動する。
・・・というのが大体の流れです。
sugoi
>>276 >これは趣味が悪いのであんまり使いたくないし、さてどうしたものか。
vfsの実装を検討するならデバイスドライバとの関係をそろそろ整理すべきかと。
なんでもfopenできると幸せではあるが、デバイス依存制御コードも書けないと辛いしね。
そもそもどの程度のァイルの属性を取り扱うかを決めねば鳴らん。
fs実装の立場だけからvfsを実装してしまうと、狭義のファイルしかとりあつかえなくなってしまうので、
遠回りでも、ソケットその他の取り扱いをひとなめしてから決めてはど・ですか。
って書かなくてもとっくにそんなこと意識してると思ひますが。
逆に隠蔽化をアプリで実現してるrubyなんかの内部を見たりすると、UNIX系、Windows系が
抱える潜在的な問題が一目でわかったりするかも。
FDイメージをいつリリースするかは勝手だけど 置いてないファイルにリンクを張るのはどうかと思われ
281 :
Be名無しさん :03/04/01 10:45
つか、おまえは、FDにかきこみして起動して動作確認してるんじゃないのか? だったらそれをファイルに落せば善いだけだろ。。。。なぜしない?
282 :
Be名無しさん :03/04/01 17:57
何で最近になってPOSIX-OSが乱立しだしたのだろう。
285 :
Be名無しさん :03/04/02 10:47
Omicronってまだ生きてたの? 開発者が服毒自殺してその後解散したって聞いたんだけど。。。
Omicronの中の人は生きているよ。
Omicronって有名なんだなー
同志社でOS作ろうとしてたやついなかったっけ?
vfsにおけるデバイスの扱いについて検討しています。
NoNameのメインファイルシステムであるFATには、一般的なUNIXのフ
ァイルシステムと違ってデバイスファイルへのサポートがないので、
UNIX(SVR4?)のspecfs的な実装は出来ません。そこで「デバイス
ファイルシステム(以下devfs)」というディスク上に実体を持たな
い仮想的なファイルシステムを考えています。devfsにデバイスドラ
イバを登録すると、適当にvnodeをでっち上げ、devfsをマウントした
ディレクトリ(慣習的に/devとか)以下にデバイスファイルが見える
ようになるという感じです。このデバイスファイルにアクセスすると
vnode経由でdevfs固有のルーチンが呼ばれ、さらにそこからデバイス
ドライバ固有のルーチンを呼び出します。細かい部分についてはまだ
詰めていかなければいけませんが、もしvfsを採用するならデバイスフ
ァイルは大体こんな感じになるでしょう。
>>294 探せばもっとありそう。niftyに埋もれてるのもいくつかあるだろうし。
>
>>294 >探せばもっとありそう。niftyに埋もれてるのもいくつかあるだろうし。
そうだね。そういえばVectorにもあったな。
>>303 一部分ですが書き込んでみました。
どうせなら和製OS(wを完璧に網羅したいので、
みなさんも書き込んでください。
今は2ちゃんよりosでぶのほうが活発だな。
irc:#osdev-jもネタぎれのようだ
>>295 それでいいと思う。
個人的には、デバイスとかパイプとかの特殊ファイルをファイルシステム上に静的に作るメリットかいまいち感じられないんだな。
パイプとかは/tmpに作ることが多いようだが、特殊ファイルは(特別にmountされた)特殊ディレクトリを使え、というので問題ない気がする。
winだと\\.\とゆーディレクトリがこーゆー特殊ファイル用とゆーことになってる。
newos(sf.net)もそんな感じっぽい。
>>295 devfsは、通常のfs上においた伝統的なデバイスノードよりいいとは思う(USB
デバイスを継いだら、ノードが発生するのとか、イイ動きだと思う) けど、
FATでは、どうせ情報が足らんきがするの(リンクカウントあるんだっけ?)。
付加情報は別ファイルのdbで制御して、属性好きなだけつけるのはどうかしら。
スランプナリ…
>>307 SMP対応してるみたい。凄い!!
>>308 >>309 FATに拘り過ぎて無駄な努力をしてるような気がしてきた。
FATじゃ特殊ファイル作れないしリンクも張れないし保護も出来ないし、
これじゃPOSIX的にどうかという気もする。
かといって、他に良いファイルシステムも思い付かないしなぁ。
GRUBでサポートされてて、構造が単純で、制限が少なくて、
多くのOSからアクセスできるファイルシステムがあればいいんだが。
いっそのこと起動だけはGRUBでサポートするファイルシステムからやって、
ルートにするファイルシステムは独自のものを使うって手もあるけど。
ガンバレ!
(^^)
313 :
Be名無しさん :03/04/19 13:39
age
∧_∧ ( ^^ )< ぬるぽ(^^)
315 :
Be名無しさん :03/04/21 10:11
廃虚
廃墟
スランプ脱出は無理だったのか…
まだ無理っす。また突然復活すると思うので、 気長にマタ〜リお待ち下さい。
ちょっとだけふかーつ。 取り敢えずファイルシステムはLinuxのext2にしとくのが無難っぽいかな。 ext2ならツールを使えばWindowsとかからもアクセスできて便利。これと いった制限もない。ただ、NoName的には構造が複雑。ブロックグループ とかいらないし。まぁ、多少の事はしかたがないとあきらめるとして、 問題はvfsをどうするか。ext2決め打ちならわざわざvfsを作る必要もな いわけだが。さてどうしたものか。
楽しみ
322 :
Be名無しさん :03/04/29 09:34
糸冬
頑張ってください
本郷決戦からもう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互換レイヤーを育てていくか
は未定。もしかしたら次のリリースでは無くなってるかも。
hoshu
終わり?
\('A.`)/
とりあえず保守、、、ってこの板で必要あるかな?w
332 :
Be名無しさん :03/05/18 10:19
ほっしゅ
333 :
は ◆cplnFO9T0I :03/05/26 09:35
BCCでコンパイルしたいんですけど
335 :
Be名無しさん :03/05/27 19:51
質問です。 メモリにブートストラップが読みこまれた時点では、 7c00〜7e00h以外のメモリの部分はなにもデータが入っていない状態なんでしょうか。 どうもよくわかりません。
336 :
Be名無しさん :03/05/27 20:42
はいってないと思われ ていうか、メモリの初期値は入ってるんじゃね?00とかFFとか・・・
337 :
動画直リン :03/05/27 21:16
>>335 頭のほうはBIOSがワークで使ってるはず。
どこまで使っているかは、資料で調べてくれ。
intel系のリアルモードならメモリ先頭は割り込みベクタテーブルだな。。 あと、AT系のBIOSは0x600くらいまで予約してたきがする。INTLISTでもみなされ。
0xA000から0x10000の領域には、BIOSルーチンが収められています。 起動した時に空いてるのは、0x500〜0x9FFFの640KBぐらいじゃないでしょうか?
9FFF付近はACPIで埋まってる可能性あり。 きちんとBIOSにメモリサイズをたずねませう。
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
>>341 さん
物凄くためになる情報サンクスです。
344 :
は ◆cplnFO9T0I :03/05/29 15:38
>>347 さん
OVERVIEW.LSTとかじゅなくて?
書き込みできるかな?
すばらしー。がんばてー。
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
354 :
( ´ -`) :03/06/17 00:14
ちょっと質問。 char ***array; array = malloc(sizeof(char *) * 10 * 10); array[0][0] = "hoge"; ポインタの二次元配列をやりたいんだけど、これって駄目なんでしょうか? コア吐いてお亡くなりになってしまいます(;´д`)
***はポインタのポインタのポインタであって、ポインタの二次元配列ではない
論点が違うか。 array=malloc(〜) for(i=0;〜){ array[i]=malloc(〜) for(j=0;〜){ array[i][j]=〜 } } て感じのコードにしないとだめだと思う
ポインタとか配列周りの理解がアヤシイくせにOS書くとは、
我ながら無謀だなと思う今日この頃。
>>356 ありがとうございます。
C言語FAQも読んでみましたがそれ以外良い方法は無いみたいですね。
array[N][M] = "hoge";
っていうのはつまり
*(*(array + N) + M) = "hoge";
という事なんだろうということで納得。
コア吐くのは*(array + N)にゴミでも入ってるからだろうな。
>>357 違うと思う。
array+N+αM
αには、array[N]の最大サイズなんだが、その定義がないので
コンパイル時にエラーか警告がでてると思う。
array[n + MaxN * m] ってするか。
356のように(ポインタの配列)の配列をつくるか。
もしかすると、MとNが逆かも。
デバッガでメモリをのぞくか、printfでアドレスを順に表示すれば、わかりますよ。
.oO(draemonって、daemonのマチガイ?)
>>348 >>339 さんの
>あと、AT系のBIOSは0x600くらいまで予約してたきがする。INTLISTでもみなされ。
という発言からINTLISTにはメモリの0x400-0x600間についての情報があると思ったのですが…
362 :
Be名無しさん :03/06/18 19:20
>>363 情報ありがとうございます。
ものすごく助かりました。
>>354 char *(*array)[10];
array=(char *(*)[10])malloc(sizeof(char *)*10*10);
array[0][0]="hoge";
だとおもう。
要は、char *array[10][10]; 的な事を動的なメモリ確保で行いたいんだよね?
>>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を入れるようにしているので。
>>365 それだと2つ目の添え字の上限がコンパイル時に確定している必要があるような。
>要は、char *array[10][10]; 的な事を動的なメモリ確保で行いたいんだよね?
そんなかんじです。ただ、大きさは10×10固定というわけではなくてその時々によって変ります。
>>367 もちろん2つ目は大きさ確定だよ。
両方可変にしたいなら
char **array;
array=(char **)malloc(sizeof(char *) * 10 * 10);
array[n*10+m]="hoge";
だね。
>>366 実験してみた。
array[N][M]はポインタのポインタのポインタとして計算された。
ごみすら入ってなく、Nullポインタでした。
ポインタを配列のベースとして扱うのは、行儀の悪い例だったかも。
もしかすると、コンパイラの実装依存とか仕様上動作不定だったかもしれない。
よく覚えてない&よく調べないでレスかいてすみません。
とりあえずは、2次元配列は計算がのろいので1次元配列の方がいいかと。
OSの根幹部分に使う場合の話ですが。
コード中の意図的なtypoってバグになりやすくないですか? コメント中or表示用文字列でのtypoなら問題ないと思いますけど。
idol_taskは確かにツボにはまるかもしんない……。
確か10年くらい昔に何かの雑誌に載ってたプログラムを眺めていて idleのことをidolと書いていたのを見た気がするのですが、 これも( ´ -`)タンですか?
373 :
Be名無しさん :03/06/20 15:53
>>353 TNX.
GRUBイメージが悪いのかな?
だめぽ。(リンク切れしてるよ)
>>67 携帯ゲーム機"プレイステーションポータブル(PSP)
このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。
画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。
この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。
任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。
?
376 :
Be名無しさん :03/06/24 19:33
FATについて質問します。 最上位にあるファイルやディレクトリについての情報(セクタのアドレスやファイル名など)は、 ルートディレクトリテーブルにあるというはわかるのですが、 下位ディレクトリのファイルやディレクトリについての情報は、どこにあるのでしょうか。 その下位ディレクトリの示すセクタにあるのでしょうか?
あともうひとつ質問です。 プロテクトモードではソフトウェア割り込みによるBIOSの利用ができないと聞きましたが、 これはプロテクトモードにおいては割りこみルーチンのアドレスを 割りこみベクタテーブルの方から読み込まないせいでしょうか? もしその理由がそうであるなら仮想8086モードを使用せずとも 割りこみベクタテーブルからの割りこみルーチンのアドレスを加工して BIOSファンクションを利用する、と言う事も可能でしょうか?
リアルモードとプロテクトモードは命令コードが似てるだけの全く別のCPUと考えた方がいいよ
>>379 FATについて理解が増えました。
どうもありがとうございます。
>>380 やっぱり仮想8086モードなどを使わなきゃならんようですね。
名前はMAGIがいいと思います。
>>366 コードをパクられた時に、証拠になるかもね>typo
>>383 ソレダ!よーし、パパもがんばってパイポするぞー。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
386 :
Be名無しさん :03/07/15 13:51
/\ _/__\_ | | ´ ゝ` | | <寝るぽ |\⌒⌒⌒⌒\ \ |⌒⌒⌒⌒~|
387 :
jorker :03/07/15 15:44
OS製作の成功と健闘を祈るw
ん? ここってもー終わってんの? 結構期待してたのに・・・
彼が一ヶ月以上更新しなかったというのはこれまでにもある。 電話代がどうにかなればきっとまた現れる筈だ。
保守
396 :
Be名無しさん :03/07/21 13:48
保守
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
399 :
Be名無しさん :03/08/12 19:24
age
どうです?美人でしょ?きりっとした目が可愛らしいですね。
でも鼻にはピアスをした今時の娘なんです。
薄めのマン毛なので抜き差しがはっきり見えるのがうれしいですね。
絶唱に近い喘ぎ声をあげての挿入シーンも見もの!
無料ムービーをゲッツ!!
http://www.pinkschool.com/
終了?
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
404 :
Be名無しさん :03/08/17 20:01
( ´ -`)タン、カブバック!
保守
( ´ -`)まだー
test
408 :
Be名無しさん :03/08/28 00:23
>>407 >>1 タン
キタ━━━━━━━━━━(゜∀゜)━━━━━━━━━━━!!!
なんかのまちがいか?
>>408 よ。俺はあんなに高レベルじゃないよ。
>>1 に失礼だよ。
禿同
( ´ -`)まだー
Monaの実行形式はどう決着するのだろうね。興味深い。
413 :
◆1haVRB54HY :03/09/07 10:55
age
( ´ -`)まだー
415 :
◆1haVRB54HY :03/09/08 20:16
-----------##-------------------------####--------------------------------------------####---------##--------------------------- ----------##----------------------------------------------------------------------------------------##-------------------------- ---------##------------------------------------------------------------------------------------------##------------------------- ---------#--------------------------------------------------------############------------------------#------------------------- ---------#--------------------------------------------------------------------------------------------#------------------------- ---------##------------------------------------------------------------------------------------------##------------------------- ----------##----------------------------------------------------------------------------------------##-------------------------- -----------##--------------------------------------------------------------------------------------##--------------------------- かなりずれてそう。 --------#------------#------#-#------######--------------------- --############---########----------##------##------------------- --------#-----------#----#####-----##-------#------------------- --############-----##-------------------####-------------------- --------#----------#-------------------#------------------------ --#########-------##-------------------------------------------- --#----##-####---##-----##-------------##----------------------- ---#####---------#-------######---------------------------------
416 :
◆1haVRB54HY :03/09/08 20:16
ズレスギ。とにかく開発癌勝手くだされ。
417 :
◆1haVRB54HY :03/09/08 20:17
# ずれっていわんかもしれないな。崩れた。
うちでは、全然ずれてないさ。
419 :
Be名無しさん :03/09/15 09:28
ほしゅage
420 :
Be名無しさん :03/10/07 20:03
ほしゅ
421 :
◆1haVRB54HY :03/10/18 11:42
ねぇーんまぁだぁ?
オプソなのを生かして、われわれで独自拡張でもしてみるか
たのんだ。
オリジナルではフロッピーを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" ←この行を追加
さきほどmakeしたのを書き込む。 $ cd 作業した場所 $ mcopy -o kernel/kernel o: $ mcopy -o init/init o: $ mcopy -o shell/shell o: これでNoName-fdimageの内容がNoName-030616になる。このイメージをBochsに 食わせるか、フロッピーに書き込んで実機でブート。
4ヶ月か。。。
GRUBの画面になったらEnter。 ..... signal handler sigpending 0 init: sleep(20); INTR 27 init: return from sleep(20); これで停止するけど、こんなものなのかな? 前はシェルもどきが起動したような記憶があるが。何かしくじったか。
mtoolsじゃなくてもloopback-mountでよさげな予感。
>>428 こっちでも同じような感じ。なにか間違ったのかな?
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);
上が画面表示全部。正常動作っぽい。 このOSはユーザーからのアクションを受ける機構が未整備なのかも。
でも、前はキーボードからなんか入力した覚えがあるんだけれども、記憶違い?
実機で試すとこうなった。動かないようだ。 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
どこのバージョンまでなら、キーボードカチャカチャしてたんだろう? で、( ´ -`)さんはどうなったんだ?(まさか、餓死したヒキーなんていう結末にはならないよね?(汗
0524も駄目歩。
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'コマンドが使えるみたい。
( ´ -`)まだー
2chOSの名前は 『Monux』もしくは〜『Mondows』 なんちゅあって〜
結局動かすのがやっとで拡張には手が届かなかったり。
( ´ -`)まだー
Monadows Monax
あぼーん
(゚∀゚)ヤター また一つオナニーOSが消えたヨー
あー、もう煽りともおさらばか。
これはこれでさびしいな・・・
こんな過疎スレに来てくれてありがとうな
>>477
NONAMEさんキター!! と思ったらお別れですか。。。
やっと終わったか。 >> 今回のバージョンにはIDEドライバのテストルーチンが組込まれており、 一台目のIDEドライブの内容を破壊しますので注意してください。 もっとも、コントローラのプルーブが未完なので、 設定ファイルで2台目のIDEコントローラをOFFにしたBochsでしか起動しませんが。 取り敢えず読み書きぐらいは出来るみたいなので、よろしければ参考にしてください。 >> て時点で終わっとけ。時間の無駄。 >> いきなり行方をくらまして、出てきていきなりコレというのもアレですが、 カーネルの作成についてははこれでいったん手を引くつもりです。 このスレに来ていただいた全ての人に感謝します。ありがとうございましたー。 >> いきなり出てくるのはそっちの勝手だから、こっちも勝手にさせてもらうわけで。 とりあえず、「ジャマ」。 まぁ、ごくろうさんでした。来年から、どっかでがんばれ。
スレ主にジャマとか言う度胸は俺にはないので、 とりあえずお疲れさまです( ´ -`)さん。
>>451 は和製OSつぶしのために遠い異国からカキコする工作員だったりしてな。
>>453 >
>>451 は和製OSつぶしのために遠い異国からカキコする工作員だったりしてな。
いや、近くて遠い国からの妨害工作の可能性も捨てきれないな。
遠い異国の工作員がちっぽけな和製OSひとつ潰して何の得があるんだ?
むしろ(ry
>>446 / / / | \ ヽ
/ / / / / || | i ヽ i
i / / / / / / || || |│ |ノス
|// / /___, -一ァ| /! |ト、|│ | | く」
|,-‐¬  ̄---┘'7 |! ハ! |,、-┼十|! | | |
, -‐ ''" し' '´_ /,ィ二l |ト、/!ヽト、\_ヽ!|!l | ハ |
,r/ __ ,イ|リ ヾハ! ヽ! ,ィ⌒ヾミリノ!/リ |
/ ||ヽ -' / ̄ )` __ |ヒノ:} '` ,イ/ | |
,r ' ヾ、 ,-、____ , イ ̄,r==- ==-' レ' /| |
/ ヽ `ーソ ' | |ト、,ヘ ′"" "" / / || |
. / \_ / | ハ ヽ`゙'ヘ ' '__. ィ / / | | |
/ / / | ヽ 川\ ヾ三ニ‐'′//! | | | | >>乙であります
/ / / 八 \川| |`ト- .. __ , イ‐ァヘ | | || |!
/ / / / \ \ 「`ー- 、 / .〉 ト、| ヽ、
,イ /-─=¬ニヘ、_ \ 厂\ 厂ヽ /!| | `ー=ヘ
-‐  ̄ /─ '  ̄ ├- ヽ\ \ノ\ \ 人 ハ!ヽ || |-┤ ヽ
/ /!‐-- | |\ ト、_`ヽ oヽ ト、! || |‐┤- ヽ
// 〉 __ / ├‐- || | 川-‐ | | 厂7! ハ! ├:┤  ̄ヽ
/ / ー ─  ̄ ├‐- リ || ハ!ヘ | | ト┤|/′ ヾ,┤ ゙i_
‐ ' 〉‐- | / /\ .|o | /ヽ/(′ ∨ \
‐--─ ──-r、___-、 /ー_ {( '´>、! /ヽ/ |\ \
456 :
Be名無しさん :04/01/09 20:05
なんかよくわかんねーんだけどさー? やたらOS開発を潰したがってる変な人が 数人いるよね?何?挑戦の人?
>>456 そんなんでageんなや。
数人と言うか、せいぜい一人か二人が自演で回してんだろ。
大体の香具師はニヤニヤしながら生暖かい目でヲチしてる。
もちろん某氏の別人格の仕業です
そうか、実はKが……。
ライバルは技術力で潰す!!!
462 :
Be名無しさん :04/06/06 16:26
( ´ -`)さん別スレにBe名無しでまだいるね。
実はこの板じゃ向こうのスレが新参なんだけどね。 向こうはOS板には避難して来たようなもんだし。 この板html化も無い事だし、有用な情報源になるスレをあんまし消して欲しくないにゃあ。 向こうがOS作り総合でこっちはどちらかと言うとNoNameの単独スレって認識。
さて、
そうだ、そうに違いない
TROうわなにをするやめr
monaのcvsのコンパイル通らない。<Assert.h>なんてないから<monapi/Assert.h>をincludeしたら ISO9660.cpp: member function 内の `System::Array<MonAPI::CString> ISO9660::GetFileSystemEntries(const MonAPI::CString&)': ISO9660.cpp:468: error: 文法エラー before `;' token
誤爆orz
471 :
みゆき :05/02/18 19:08:06
ははは
472 :
Be名無しさん :2005/07/13(水) 00:04:35
age
473 :
Be名無しさん :2005/07/13(水) 22:16:21
なに言語ですか?
ブートローダはオリジナル?
475 :
Be名無しさん :2006/02/12(日) 23:30:29
これ重複スレなんで、続きは「OSを作ろうスレ」でやってくれ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。Mona OS ができつつあるよ。 Mona OS ができつつあるよ。
476 :
Be名無しさん :2006/02/13(月) 02:30:15
>これ重複スレなんで、続きは「OSを作ろうスレ」でやってくれ。 とか言いながらわざわざ上げて書き込みを促すのはいかがなものかな? たまにはこのスレも使わせてもらうことにするよ。
477 :
Be名無しさん :2006/06/08(木) 15:27:19
>>448 どういたしまして! ( ´ -`)さん元気でやっていらっしゃるだろうか?
478 :
Be名無しさん :2006/06/08(木) 21:32:54
脱北者と引き換えに、総連幹部・職員から本国に送り返すってことでおk
エミュレーターOS。 物理ハードウェアを均一の仮想化(ヴァーチャル)ハードウェアとして、他のOSに提供する、 BIOS/EFIを拡張したようなOS。このOS用のドライバを内包する。 PC/AT互換機であれば命令コードの変換は必要ないので性能ダウンは軽度にとどまる。そんなOSが欲しい。 HDDも仮想化し、そのデータをただ複製するだけで、このエミュレータ上であればハードウェアを問わず同環境で起動可能。 バックアップソフトウェアも必要なし。複数のOSの同時起動も当然可能。 ParallelsのOS版みたいなもの。もっとハードウェアとの親和性を高めて。 これ、自作erには便利だと思うんですよね。 M/Bやグラボなど、構成を変えても、同じ仮想化HDDで使用できる。 エミュレータOS側は再インストールとドライバインストールが必要かもしれないけど、 エミュレータOSにはユーザーデータや日常使うソフトウェアはインストールしないから、 大した手間にはならない。 これって作成可能だと思いますか?問題点があるとすればどういったとこでしょうか。
間違えた…本スレに移動します。すみません。
482 :
Be名無しさん :2006/09/25(月) 21:22:49
(・A・)
ここの1がOS板で評価が高い理由が分かった。 今までなんでだろうとは思っていたが。
484 :
Be名無しさん :2006/09/25(月) 23:36:54
それは俺のおいなりさんだからさ
485 :
Be名無しさん :2006/09/25(月) 23:44:11
>>483 これの前にUnilinwinmacbexも作ったあるよ。
486 :
483 :2006/09/25(月) 23:44:36
>>485 ほもほも、ってか顔文字が偶然合致しただけじゃね?w
>>487 いえ。顔文字の合致って何の話?
ログを持ってないからわからん。Unilinwinmacbexスレのログ持ってる人は
うp頼みます。
489 :
Be名無しさん :2006/09/26(火) 00:05:01
>>488 あぁぁぁあ、そうかそうか、つまりジオシティのURLが同じってことか。
んでUnilinwinmacbexって有名なん?
>>490 有名ではないね。最近まですっかり忘れ去られてた。
>>491 ほうほう、むしろ作っていたという事実があるという感じか。
でもかなり歴史のある人だったんだな…
そりゃExt2にも手を出すわな。
>>492 「和製OS」という呼び名を広めたThinkOSにも参加してた
ってdev-jに書いてあったよ
495 :
4 :2006/09/26(火) 13:24:29
496 :
トテトテ :2006/09/26(火) 17:36:06
パソコン買う予定・・・金ないけどorz
和声OS
補
歴史的スレ
501 :
Be名無しさん :2008/01/05(土) 18:11:55
うっかりsageちゃった..
Windows NEET作らね? スタートを就職に
504 :
Be名無しさん :2008/05/26(月) 19:11:45
Unilinwinmacbex最高スレが消えた
>>503 そうそう。君はそうやって人の言うことを聞いとくべきだよ。
六年生とは思えないほど稚拙な文章だったけど、面白かったよ。
506 :
Be名無しさん :2008/12/05(金) 22:20:41
507 :
Be名無しさん :2008/12/07(日) 16:21:57
#include <stdio.h> int main(int argc, char *argv[]) { kernel_init(); kernel_exit(); shutdown("halt -now"); return 0; }
OS下じゃなきゃstdio.hはつかえないだろ
509 :
Be名無しさん :2009/07/08(水) 16:03:38
今スレ読み返してみて思ったんだけど、
>>451 って単に、そんな事言わずにまた出てこいよって意味の
ツンデレカキコだったように思えるのは考えすぎだろうか?
513 :
◇QZaw55cn4c :2010/12/02(木) 11:56:37
>>1 さんたまには戻ってこないかな...
blogもあるけどやっぱり寂しい...
保守
保守
まじかよ
517 :
Be名無しさん :2011/02/18(金) 23:03:05
iPhoneやiPodのOSなんかどうだろ?
ほ
ま
520 :
Be名無しさん :2011/05/20(金) 21:04:09.13
賛成あげー
521 :
Be名無しさん :2011/05/29(日) 15:33:20.05
迷信あげー
522 :
Be名無しさん :2011/06/02(木) 14:54:03.37
523 :
Be名無しさん :2011/06/08(水) 21:07:26.43
うぜーあげー
補修
525 :
Be名無しさん :2011/08/24(水) 01:24:42.16
夏休みだし自己研究で
ほ
527 :
Be名無しさん :2012/02/05(日) 18:38:41.68
a
528 :
Be名無しさん :2012/12/14(金) 21:08:36.89
下からいくと…
東芝府中 峰村醸造