随笔分类 -  OS

linux/windows/other_os
摘要:编者按】一位独立开发者Gusc准备开发自己的系统了,但是今天他准备分享一下具体怎样开发的步骤。对于初学者来说,就是让你的代码成功在CPU上运行,且不需要任何底层操作系统,但首先你得有个计划:一.计划1. 瞄准现代架构,Intel 64,比如Ivy Bridge, 酷睿3rd i5 CPU 集成Intel HD 4000 GPU 以及 B75 Express芯片组2.避免遗留数据,尽快的删除它们,甚至可以跳过保护模式而直接进入长模式3. 尽快跳到C语言4. 忘掉旧PCI、IDE、PS/2、串行/并行端口;也忘掉BIOS( Basic Input Output System)、UEFI,我自己准备 阅读全文
posted @ 2013-05-29 10:55 xxx1 阅读(219) 评论(0) 推荐(0)
摘要:利用bochs调试内核(转载)利用bochs调试内核(主要是在windows下调试)Bochs具有非常强大的操作系统内核调试功能。这也是本文选择Bochs作为首选实验环境的主要原因之一。有关Bochs调试功能的说明参见前面14.2节,这里基于Linux 0.11内核来说明Windows环境下Bochs系统调试操作的基本方法。14.8.1 运行Bochs调试程序我们假设Bochs系统已被安装在目录“C:\Program Files\Bochs-2.1.1\”中,并且Linux 0.11系统的Bochs配置文件名称是bochsrc-hd.bxrc。现在在包含内核Image文件的目录下建立一个简单的 阅读全文
posted @ 2013-04-06 15:14 xxx1 阅读(1407) 评论(0) 推荐(0)
摘要:向下舍入: 先从向下舍入说起,111以10为单位向下舍入为110,以100为单位舍入为100,从中不难发现所谓向下舍入,就是把最后几位数字强制变为0.,所以以4kbs为单位进行向下舍入为:t &= 0xfffff000; 向上舍入: 以4KB为例,向上舍入,先加0xfff判断进位,再向下舍入操作:t = (t + 0xfff) & 0xfffff000; 十进制数不能用... 阅读全文
posted @ 2012-11-12 21:23 xxx1 阅读(371) 评论(0) 推荐(0)
摘要:1.显示目前终端支持的语言2.修改LANGLANG=en_us//注意无空格3.Ctrl+d:终端输入结束4.man帮助命令标示含义执行man date 后出现如下图示:DATE(1)代号:1:用户在shell环境中可操作的命令或可执行文件。5:配置文件或某些文件格式。8:系统管理员可使用的管理命令。man帮助页大致分成下面几个部分:NAMESYNOPSIS:简短命令执行语法简介。DESCRIPTION:对命令完整的描述。OPTIONS:列举所有可用选项说明。COMMANDS:当这个程序在执行时,可以在此程序中下达指令。FILES:这个程序或数据所使用或单靠或连接到的某些档案。SEE ALSO 阅读全文
posted @ 2011-12-16 13:04 xxx1 阅读(177) 评论(0) 推荐(0)
摘要:Linux基本常用知识整理Linux启动过程1.BIOS自检。2.启动Grub。3.运行Linux内核并检测硬件。4.运行系统第一个进程init。5.init读取系统引导配置文件/etc/inittab中的信息进行初始化。6./etc/rc.d/rc.sysinit 系统初始化脚本。7./etc/rc.d/rcx.d/[ks]* 根据运行级别x配置服务。a)终止以”k”开头服务。b)启动以”s”开头的服务。8./etc/rc.d/rc.local 执行本地特殊服务。9. 其他特殊服务。 Linux指定运行级别 命令:#/sbin/init [0123456] runlevel :查看当前用户. 阅读全文
posted @ 2011-11-21 23:31 xxx1 阅读(222) 评论(0) 推荐(0)
摘要:含有后台运行功能,日后会不定期加入管道功能,历史记录功能#include <stdio.h> #include <unistd.h> #define MAX_LINE 80 void setup(char inputBuffer[], char *args[],int *background) { int length, i, start, ct; ct = 0; length = read(STDIN_FILENO, inputBuffer, MAX_LINE); start = -1; if (length == 0) exi... 阅读全文
posted @ 2011-08-29 22:02 xxx1 阅读(259) 评论(0) 推荐(0)
摘要:#include <stdio.h> #include <sys/shm.h> #include <sys/stat.h> int main(void) { int segment_id; char* shared_memory; const int size = 4096; unsigned short mode; struct shmid_ds shmbuffer; segment_id = shmget(IPC_PRIVATE, size, S_IRUSR|S_IWUSR); shared_memory = (char*)shmat(segment_i 阅读全文
posted @ 2011-08-27 10:17 xxx1 阅读(284) 评论(0) 推荐(0)
摘要:子进程生成fibnacii 父进程输出 #include <sys/types.h> #include <sys/shm.h> #include <sys/stat.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define MAX_SEQUENCE 10 typedef struct { int fib_sequence[MAX_SEQUENCE]; int sequence_size; }shared_data; int main(int 阅读全文
posted @ 2011-08-25 13:10 xxx1 阅读(249) 评论(0) 推荐(0)
摘要:#include <sys/types.h> #include <stdio.h> #include <unistd.h> int value = 5; int main(void) { pid_t pid; pid = fork(); if (pid == 0) { value += 15; } else if (pid > 0) { wait(NULL); printf("PARENT: value = %d", value); exit(0); } }输出PARENT: value = 5 // (各个进程有独立存储空间)通过 阅读全文
posted @ 2011-08-24 23:36 xxx1 阅读(271) 评论(0) 推荐(0)