Archive for the ‘Linux’ Category

Linux下的定时运行

配置cron服务:

crontab -e

文件内容:每20分钟执行command一次

# m h  dom mon dow   command
 */20 * * * * tar zcvf /mnt/hgfs/Dropbox/ScrapBook.tar.gz /mnt/hgfs/Dropbox/ScrapBook
 */20 * * * * tar zcvf /mnt/hgfs/Dropbox/repo.tar.gz      /mnt/hgfs/Dropbox/repo

启动cron服务:

sudo service cron start

停止cron服务:

sudo service cron stop

Linux开机自动运行

我的系统:Ubuntu 11.04 \n \l

修改文件/etc/rc.local,文件内容如下:


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/sbin/dhclient &>/tmp/dhclient.log
touch /home/maemo/12345.txt
service cron start
exit 0

这样,开机时,便会自动在/home/maemo/目录下生成一个新文件12345.txt;同时,启动定时服务cron。

Linux的那些内存操作的函数 – 总揽

ioremap

From the source code, below comment is found.

* ioremap takes a PCI memory address, as specified in
* Documentation/IO-mapping.txt.

将高位物理内存映射到内核虚地址空间,这些高位内存的位置多为外设如PCI设备,或者大内存高位部分,经过ioremap后就可以访问它们。

kmalloc

kmalloc函数返回的是虚拟地址(线性地址). kmalloc特殊之处在于它分配的内存是物理上连续的, 这对于要进行DMA的设备十分重要.

kzalloc

/**
* kzalloc - allocate memory. The memory is set to zero.
* @size: how many bytes of memory are required.
* @flags: the type of memory to allocate (see kmalloc).
*/
static inline void *kzalloc(size_t size, gfp_t flags)
{
	return kmalloc(size, flags | __GFP_ZERO);
}

kzalloc实现了kmalloc并初始化为0

vmalloc

而用vmalloc分配的内存只是线性地址连续, 物理地址不一定连续, 不能直接用于DMA.

mmap

这个是用户态函数mmap可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针来做而不需要read/write函数。

#include <sys/mman.h>

extern void *mmap (void *__addr, size_t __len, int __prot, int __flags, int __fd, __off_t __offset) __THROW;

该函数各参数的作用图示如下:

%d bloggers like this: