操作系统(linux)
文章平均质量分 61
envy2008
这个作者很懒,什么都没留下…
展开
-
搭建操作系统前工作1
运行虚拟机 1.现在的虚拟机挺多的,好像有vmware, virtalbox(德国人的,好像被oracle收购了,其目录是oracle,从我开始计划要在IT行业混,oracle好像就一直在收购,mysql,sun,谁知道它又要吃掉谁呢,呵呵).赵炯博士的《linux内核完全注释》有个bochs,好像还有个virtualPC的,反正虚拟化产品挺多的。本文选择virtalbox,因为其开源,简单好...原创 2011-01-24 19:49:58 · 103 阅读 · 0 评论 -
linux extern关键字的作用2
extern int O_RDONLY;#include <stdio.h>//包含include <fcntl.h>时,会报错/*main.c:5: error: conflicting types for 'open'/usr/include/fcntl.h:72: error: previous declaration of 'open' wa...原创 2011-03-09 17:13:30 · 132 阅读 · 0 评论 -
bochs调试linux 0.11内核
学习操作系统,最难的就是保护模式的各种硬件机制了(如分段分页寻址,特权级,门机制)。单纯的8086实模下的汇编模拟器是无法模拟,调试这些机制的。只能用个功能更强大的80*86模拟器了。由于模拟器挺多的,如vmware, virtual box等等,但是好像更方便调试的,我们选择bochs吧。 赵炯博士已经为我们准备好了bochs,而且还带...原创 2011-07-01 15:24:55 · 499 阅读 · 0 评论 -
linux-gcc 编译时头文件和库文件搜索路径(转)
一、头文件 gcc 在编译时寻找所需要的头文件 : ※搜寻会从-I开始 ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH ※再找内定目录/usr/include /usr/local/include/usr/lib/gcc-lib/i386-linux/2.95.2/include/usr/lib/gc...原创 2011-03-11 11:16:44 · 79 阅读 · 0 评论 -
linux file open的实质
linux open file的时候到底做了什么呢?如图: 这样多线程对文件读写,可见,也是需要对文件进行同步保护的。 但是这和内存变量的同步似乎有些不太一样,也就是用mutex好像不能互斥文件open之后的读写吧? 看来需要锁这个东西,它的机制和内存锁mutex应该是一样的吧,猜测的!希望后面能看到例子。 代码保存一下: #inc...原创 2011-03-30 17:36:15 · 732 阅读 · 0 评论 -
solaris mount细节
1. 首先确保 nfs server is running. Restart the nfs server/etc/init.d/nfs.server stop/etc/init.d/nfs.server start 2. 在机器A上输入 machineA# share -F nfs -o rw /share-dir 在机器B上输入 machin...原创 2011-04-11 14:33:42 · 174 阅读 · 0 评论 -
virtual box中安装red hat并实现 ftp功能
由于在公司上网,公司有个防火墙,安装虚拟主机需要虚拟机里面的操作系统能自动更新。我的目标是找一个能越过NTLM验证的代理工具,试验了python版本的ntlmaps这个东西,怎么也试验不成功,这时候目标放到了frie-drill这个工具上,这个工具有window版本下的.net版本的,也有linux下源码的。这时候就悲剧了。我开始在virtualbox里面安装了ubuntu 9.04,...原创 2011-11-03 15:49:44 · 191 阅读 · 0 评论 -
red hat的远程桌面 xmanager
用virtualbox装好red hat之后,我们可以打开ftp服务,ssh这个服务就是自动打开的。现在我们还需要远程桌面的东西。因为现在好多linux不仅仅只需要字符界面,有许多办公软件,如office,版本控制器 svn, clearcase等,oracle安装界面等,都需要图形化的节目。所以我们不仅仅光是telnet或者ssh上Linux就可以了,我们还需要像window那样,需要...原创 2011-11-04 14:49:50 · 351 阅读 · 0 评论 -
gdb调试linux0.11内核。
1. 下载bochs源码,配置,编译。 ./configure --enable-gdb-stub. 2. 在http://www.oldlinux.org/Linux.old/bochs/ 下载linux-0.11-gdb-050619.tar.gz 这里面有image 和system.map等等调试信息。 3. 配置bochs...原创 2011-11-26 16:13:46 · 183 阅读 · 0 评论 -
Shell学习
类unix操作系统中有b shell, k shell, c shell.其中 b,k shell用echo $0可以看出用的是什么shell. 其中bash(b shell)是我们最常用的,习惯用的shell. 如果是k shell 删除命令行,这个和 bash就很不一样,首先要设置编辑器 set -o vi设置其命令编辑用vi. 自动填充呢,用 esc+...原创 2011-11-30 17:32:51 · 83 阅读 · 0 评论 -
U盘安装red hat.
没有DVD光盘和DVD光驱,悲剧啊,还好,网上有工具。 1. 一般网上有下载red hat的,现在好像是red hat6还有red hat9.我用的是red hat5. http://ftp.redhat.com/redhat/rhel/beta/6.0/i386/iso/ 这个网址的速度不错。 所需要的必备条件: redhat iso, UltraIso刻...原创 2012-02-09 10:50:10 · 183 阅读 · 0 评论 -
linux 下samba使用简介
今天装了一台真正的linux主机(red hat),呵呵。安装好了ftp, ssh等服务,但是好像还需要个window能和linux共享文件夹的软件samba,还好,一开始在安装linux的时候,就按照了smaba,如果没有,我们可以在iso中提取rpm包来安装。 主要参考文献为http://wenku.baidu.com/view/980d52eb6294dd88d0d26bda.h...原创 2011-12-06 16:46:46 · 118 阅读 · 0 评论 -
linux 当前shell指定java版本
装了red hat 5.4,系统默认自带了Java 1.4,但是现在一般用Java 1.6, java1.6的路径是 /usr/java/jdk6 当前的PATH=/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/bardwu/bin:/usr/java/jdk6/bin:/home/bard...原创 2012-02-16 09:41:16 · 680 阅读 · 0 评论 -
red hat 安装svn
素材: httpd-2.2.22.tar subversion-1.6.17.tar apr-1.4.6.tar apr-util-1.4.1.tar apr-1.4.6.tar sqlite-autoconf-3071100.tar 1. 下载 apr-1.4.6.tar,apr-util-1.4.1.tar 因为这个是apache和svn安装的前...原创 2012-03-23 16:34:43 · 195 阅读 · 0 评论 -
GCC 参数详解(转载)
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld] [参数详解] -x language filename ...原创 2011-03-01 10:29:15 · 89 阅读 · 0 评论 -
linux extern关键字的作用
extern 的作用是起到一个链接作用! 1.简单的例子。 //包含头文件是为了声明这个函数,表示这个函数已经被定义过了,已经生产过二进制代码了。#include <stdio.h>int main(int argc, char **argv){ printf("hello world!"); return 0;}...原创 2011-02-25 17:28:46 · 158 阅读 · 0 评论 -
建立操作系统准备工作2
虚拟机创建好了,还有一些瑕疵。比如分辨率很低。如何和宿主操作系统交互等。这里我把网络上高人的解决方法摘录到我的博客,以备查找。 ubuntu我们安装的时候,是有个默认用户的,但是这个默认用户的权限不是那么多。因为我们后面用到很多命令的是要用sudo的,一个提升权限的命令,就是借用超级用户的部分命令。当然我们开始对linux不是很熟的话,最好用到所有的功能,这样可以快速提高我们的感性认...原创 2011-01-25 14:24:26 · 115 阅读 · 0 评论 -
最简单操作系统(orange os样例).
于渊的《自己动手写操作系统》告诉我们如何自己写一个操作系统,当然写操作系统是个很难的事情,所以我们要慢慢来,先看看如何展示在裸机上写一个最小最小的“操作系统”,也许根本称不上操作系统。 操作系统的初步概念。 操作系统就是用CPU指令控制硬件,发声,发光,读写等等。CPU不同也会导致指令集合不同,CPU有通用CPU,arm芯片等等,还有专用的芯片等等。我们这里考虑的是80*86,in...原创 2011-01-25 16:39:02 · 4285 阅读 · 0 评论 -
关于linux程序在内存中的分布管理
这段时间,一直在看汇编,想学习一下linux内核,但是看着看着,感觉汇编操作底层,虽然能力很大,但是不好管理。假如有这个代码 mov ax, [msg+1234h]-->把ds*16+msg+1234h内存里面的东西移动到ax寄存器中,msg表示这段程序的起始地址,但是当我们把这个程序编译连接好后,那么这段代码可能是 mov ax, [2234h]。当我们把这段代码整...原创 2011-05-27 10:54:58 · 83 阅读 · 0 评论 -
linux下socket编程
在Java里面进行socket编程是很容易的事情,为了更好地搞清楚socket运行机制,有必要了解一下linux下socket是如何运行的。由于涉及到底层的东西比较多,即使你本来很了解如何运用这些API,但究其下面层次的原理,如果不深入到源码的话,也是比较难以理解的。我本人理解的也不是很好,只能抛砖引玉了。 大概的流程如图所示: 1.服务器建立一个sock...原创 2011-02-18 11:41:56 · 105 阅读 · 0 评论 -
linux多线程1
如果了解java多线程编程的话,照葫芦画瓢,是很容易理解linux下面的线程模型的。 #include <pthread.h>#include <stdio.h>#include <unistd.h>//define the first thread procedure.void * thread_1_pro(void * ar...原创 2011-02-22 18:33:25 · 68 阅读 · 0 评论 -
linux多线程2
下面我们将上面两个线程进行同步。 #include <pthread.h>#include <stdio.h>#include <unistd.h>//初始化一个mutex(互斥体).pthread_mutex_t counter_mutex = PTHREAD_MUTEX_INITIALIZER;//define the...原创 2011-02-22 18:45:02 · 142 阅读 · 0 评论 -
linux c 多线程 生产者--消费者
linux 线程同步机制和java的是极其类似的。如果不太明白java多线程编程,可以参考我原先写的java多线程编程。下面我们将展现linux下如何实现生产者和消费者模型。 直接上代码吧: #ifndef _LIST_H_#define _LIST_H_#include <string.h>#include <stdio.h>struct ...原创 2011-02-23 16:36:58 · 134 阅读 · 0 评论 -
linux c 多线程 生产者--消费者2
实在不好意思,第一个版本有些问题,是局部变量和堆里面变量的区别。今天做了一下修改。代码如下。#ifndef _LIST_H_#define _LIST_H_#include <string.h>#include <stdio.h>#include <stdlib.h>struct List{ char * buffer;...原创 2011-02-24 11:02:27 · 109 阅读 · 0 评论 -
GDB调试技巧(转贴)http://www.cppblog.com/true/archive/2009/01/11/71749.html
http://dsec.pku.edu.cn/~yuhj/wiki/gdb.html这个网站介绍得极好! 用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强...原创 2011-02-24 12:56:25 · 343 阅读 · 0 评论 -
linux 聊天室 一对多
把上个版本一对一的聊天室,修改了一下,使其能进行一(server)对多(client)的聊天。直接上源码: /* provide the function to log. input: environment varibles, (1) LEVEL=DEBUG||WARNING||ERROE (2)LOGPATH(the log file saving ...原创 2011-02-24 18:14:34 · 224 阅读 · 0 评论 -
linux库文件制作
一、为什么要使用库文件 我们在实际编程工作中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同, 实现代码也相同,也是我们所说的重复代码。比如,很多项目里都有一个用户验证的功能。 代码段如下: //UserLogin.h文件,提供函数声明 int IsValidUser(char* username, int namelen); //UserLo...原创 2011-02-25 10:38:02 · 207 阅读 · 0 评论 -
c语言编译全过程(转)
C语言编译全过程 编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序--> 预编译处理( . c) --> 编译、优化程序(. s、.asm)--> 汇编程序( . obj...原创 2011-02-25 10:46:33 · 111 阅读 · 0 评论 -
linux 可执行文件依赖库查看
在多线程编程中,我们用gcc -Wall -g -lpthread log.h log.c List.c List.h server.c -o server.exe编译的时候,我们会加上一个-lpthread,表示要用到gcc默认路径之外的库,但是这个库文件在哪里呢?我们可以用ldd命令来看。 比如 bard@bard-desktop:~/sharing$ ldd serv...原创 2011-02-25 12:24:44 · 306 阅读 · 0 评论 -
ubuntu 装mysql
最近项目好急,没时间整理,特做以下记录 去mysql网站下载mysql.tar 或者用ubunt apt-get install mysql-server ubuntu装的话:mysql 命令在/usr/bin目录下, 用mysqld_safe启动,(root用户) 创建db, user ,grant权限。...原创 2012-04-12 13:37:47 · 91 阅读 · 0 评论