博文

Linux环境进程间通信——无名管道工作机制研究 (2006-07-27 13:33:00)

摘要: 作者:曹成  引言 Linux作为一个开源的操作系统,是我们进行操作系统和提高编程水平的最佳途径之一。 好的程序如同好的音乐一样,完成的完美、巧妙。开放源码的程序都是经过无数人检验地,本文将以linux-kernel-2.6.5为例对pipe的工作机制进行阐述。 一、        进程间通信的分类     大型程序大多会涉及到某种形式的进程间通信,一个较大型的应用程序设计成可以相互通信的“碎片”,从而就把一个任务分到多个进程中去。进程间通信的方法有三种方式:       管道(pipe)       套接字(socket)       System v IPC 机制 管道机制在UNIX开发的早期就已经提供了,它在本机上的两个进程间的数据传递表现的相当出色;套接字是在BSD(Berkeley Software Development)中出现的,现在的应用也相当的广泛;而System V IPC机制Unix System V 版本中出现的。 二、        工作机制 管道分为pipe(无名管道)和FIFO(    命名管道),它们都是通过内核缓冲区按先进先出的方式数据传输,管道一端顺序地写入数据,另一端顺序地读入数据读写的位置都是自动增加,数据只读一次,之后就被释放。在缓冲区写满时,则由相应的规则控制读写进程进入等待队列,当空的缓冲区有写入数据或满的缓冲区有数据读出时,就唤醒等待队列中的写进程继续读写。   管道的读写规则:   管道两端可分别用描述字fd[0]以及fd[1]来描述,需要注意的是,管道的两端是固定了任务的。即一端只能用于读,由描述字fd[0]表示,称其为管道读端;另一端则只能用于写,由描述字fd[1]来表示,称其为管道写端。如果试图从管道写端读取数据,或者向管道读端写入数据都将导致错误发生。一般文件的I/O函数都......

阅读全文(6878) | 评论:0 | 复制链接

Windows与Linux之间的资源共享(1)(2006-07-26 18:22:00)

摘要:  Windows和Linux都是目前常用的操作系统,两者之间的资源如何共享是许多比较感兴趣的问题,下面就将在两种系统中进行资源共享的方法分别作以介绍。   在Windows系统中共享linux资源 
  利用小红帽redhat 6.0中自带的samba程序可以实现在Windows中共享Linux中的共享文件,samba程序提供了samba文件共享服务。要使用这种文件共享服务,首先要设置配置文件/etc/smb.conf,设置本机的工作组或域名、netbios机器名、本地或NT域控制器口令认证方法。在进行本地认证设置时,要使用命令/usr/bin/smbpasswd生成用户口令文件/etc/smbpasswd,然后设置Linux中允许Windows共享的目录,例如共享file,则目录对应的实际目录就为/disk1/file。具体设置如下:   [global]
  本机的工作组或域名、netbios机器名
    # workgroup = NT-Domain-Name or Workgroup-Name
    workgroup = host
    # netbios name = 机器名
    netbios name = linuxpc
    # server string is the equivalent of  the NT Description field
    server string = Linuxzou Samba Server
    # security =用......

阅读全文(6040) | 评论:0 | 复制链接

MagicLinux 1.2 版疑难解答汇编(2006-07-26 17:52:00)

摘要:由于开发组人手有限,使用的计算机都比较古老了,所以对新硬件兼容问题可能比较多,请谅解。硬件兼容问题其实一直困扰着 GNU/linux 用户。已知问题:

1. 分区表无法识别问题
由于目前安装程序使用的分区工具比较古老,可能无法识别 pqmagic (尤其是高版本的 pqmagic) 创建的分区,请尽量不要使用它。建议在 dos/win2k 下删除一个空闲分区,然后安装系统到这个分区,注意要在空白空间创建一个内存 1-2 倍的交换分区,还有一个 / 分区,这是基本要求。您也可以创建其他分区。



2. 显示器分辨率问题
(a) 安装时默认显示器分辨率只有 800X600,请不要选择,请选择自己显示器的型号。
(b) 为什么我的桌面大于窗口?任何发行版安装时都不要选择多于一个的分辨率!我们推荐 1024*768 @ 24 bit 否则安装后就会看到“桌面大于屏幕”的假象。可以使用 ctrl+alt+小键盘 -或+ 调整分辨率。然后重新运行 xconfig。



3. 硬件自动识别问题
由于目前使用的 kudzu 比较古老,可能无法正确识别所有新硬件。请下载新版本试试:
http://www.magiclinux.org/dev/rc3/cd1/RPMS/kudzu-1.1.106-1mgc.i686.rpm
http://www.magiclinux.org/dev/rc3/cd1/RPMS/kudzu-devel-1.1.106-1mgc.i686.rpm
安装:
rpm -Uvh kudzu-*
然后在控制台重新配置系统:
init 3
kudzu
cce
setup
alsaconf
最后重启:
init 6

例如某些 8139 网卡无法驱动
原因:kudzu 对于某些 8139too 的硬件错误识别为 8139cp。并非全部情况都这样,我的 Realtec 8139 网卡就没有问题。
修正:用 root 修改 /etc/modprobe.conf,将里面的 8139cp 改为 8139too,重启。如果不行,请执行 kudzu,然后执......

阅读全文(5519) | 评论:0 | 复制链接