精华内容
下载资源
问答
  • 查看共享文件夹(服务器)的IP地址

    千次阅读 2019-09-27 08:51:02
    使用 ping -4 共享服务器名称 即可获取。

    使用

    ping -4 共享服务器名称

    即可获取。

    展开全文
  • 如何查看共享内存?

    千次阅读 2019-08-26 15:59:46
    查看共享内存:ipcs -m 删除共享内存:ipcrm -m shmid 查看信号量:ipcs -s 删除信号量:ipcrm-s semid 查看消息队列:ipcs -q 删除消息队列:ipcrm -q queueid

    查看共享内存:ipcs -m

    删除共享内存:ipcrm -m shmid

    查看信号量:ipcs -s

    删除信号量:ipcrm -s semid

    查看消息队列:ipcs -q

    删除消息队列:ipcrm -q queueid

    展开全文
  • 实验目的 深入理解操作系统的段、页式...本次实验的基本内容是先用Bochs调试工具跟踪Linux 0.11的地址翻译(地址映射)过程,然后在此基础上编程实现一个基于内存共享的进程间通信机制。本实验主要完成如下三项...

    实验目的

    1. 深入理解操作系统的段、页式内存管理,深入理解段表、页表、逻辑地址、线性地址、物理地址等概念;
    2. 实践段、页式内存管理的地址映射过程;
    3. 编程实现段、页式内存管理上的内存共享,从而深入理解操作系统的内存管理。

    实验内容

    本次实验的基本内容是先用Bochs调试工具跟踪Linux 0.11的地址翻译(地址映射)过程,然后在此基础上编程实现一个基于内存共享的进程间通信机制。本实验主要完成如下三项基本工作:

    1. 在保护模式下(启动了分段和分页机制以后)工作的Linux 0.11代码中加上一个内存寻址指令,并且在该内存地址处放置一个自己构造的数据,应用Bochs调试工具跟踪该地址的从逻辑地址、GDT表、线性地址、页表、物理地址的过程,最后验证是否是自己放置的数据?实际上就是手动进行一次地址翻译工作。

    2. 实现两个进程通过页共享来进行相互通信

    实验步骤

    实验步骤参考博客:
    https://www.cnblogs.com/tradoff/p/5774355.html
    https://www.shiyanlou.com/courses/reports/1320023/
    (侵删)

    1. 添加test.c文件

    挂载hdc,在usr/root下添加test.c文件用来测试地址映射,代码如下:

    #include <stdio.h>
    
    int i = 0x12345678;
    
    int main(void)
    {
        printf("The logical/virtual address of i is 0x%08x", &i);
        fflush(stdout);
    
        while (i)
            ;
    
        return 0;
    }
    

    2. 调试Linux-0.11

    输入./dbg-asm用汇编级调试启动linux-0.11
    然后输入以下命令编译并运行test.c
    gcc -o test test.c
    ./test
    在这里插入图片描述
    这时候会进入死循环,我们切换到ubuntu终端,按下Ctrl+c暂停bochs。

    3. 找到物理地址

    为了让linux-0.11中运行的test跳出循环,需要找到逻辑地址ds:0x3004对应的物理地址,将其内容(变量i)改为0。

    在终端中输入sreg,得到gdtr的基址值为0x00005cb8,ldtr为0x0068即0000 0000 0110 1000 b,可知索引为1101b即13,TI位为0,即GDT中的第13项为LDT的段描述符。
    在这里插入图片描述
    输入xp /2w 0x00005cb8+13*8得到LDT段描述符,可以得到LDT的基址为0x00f9a2d0
    ds段选择子为0x0017 => 0000 0000 0001 0111 b,可知索引为10b即2,TI位为1,即LDT中的第2项为ds的段描述符,输入xp/2w 0x00f9a2d0+2*8得到ds段描述符,可以知道ds的基址为0x10000000,所以0x3004对应的线性地址为0x10000000+0x3004=0x10003004
    在这里插入图片描述
    输入xp /w 64*4获取页目录项,可知页表基地址为0x00fa6000。
    输入xp /w 0x00fa6000+3*4得到物理基址为0xfa5000。
    输入xp /w 0xfa5000+4得到的内容即test.c中的变量的值,输入setpmem 0xfa5004 4 0将它设为0。
    在这里插入图片描述
    在终端中输入c让bochs继续运行,发现test跳出循环。
    在这里插入图片描述

    4. 添加系统调用

    在unistd.h中添加如下代码:

    #define SHM_SIZE 64
     
    typedef struct shm_ds
    {
        unsigned int key;
        unsigned int size;
        unsigned long page;
    }shm_ds;
    
    int sys_shmget(unsigned int key,size_t size);
    void * sys_shmat(int shmid);
    

    在这里插入图片描述
    已及定义两个系统调用:
    #define __NR_shmget 76
    #define __NR_shmat 77
    在这里插入图片描述
    修改完后把此文件覆盖usr/include里的unistd.h。

    在sys.h中添加函数声明
    extern int sys_shmget();
    extern int sys_shmat();
    在这里插入图片描述
    在system_call.s中把nr_system_calls改为78(系统调用个数)

    接下来在kernel下添加shm.c,代码如下:

    #define __LIBRARY__
    #include <unistd.h>
    #include <linux/kernel.h>
    #include <linux/sched.h>
    #include <linux/mm.h>
    #include <errno.h>
    
    static shm_ds shm_list[SHM_SIZE] = {{0,0,0}};
    
    int sys_shmget(unsigned int key, size_t size)
    {
        int i;
        void *page;
        if(size > PAGE_SIZE)
            return -EINVAL;
        page = get_free_page();
        if(!page)
            return -ENOMEM;
        printk("shmget get memory's address is 0x%08x\n",page);
        for(i=0; i<SHM_SIZE; i++)
        {
            if(shm_list[i].key == key)
                return i;
        }
        for(i=0; i<SHM_SIZE; i++)
        {
            if(shm_list[i].key == 0)
            {
                   shm_list[i].page = page;
                shm_list[i].key = key;
                shm_list[i].size = size;
                return i;
            }
        }
        return -1;
    }
    
    void * sys_shmat(int shmid)
    {
        int i;
        unsigned long data_base, brk;
    
        if(shmid < 0 || SHM_SIZE <= shmid || shm_list[shmid].page==0 || shm_list[shmid].key <= 0)
            return (void *)-EINVAL;
    
        data_base = get_base(current->ldt[2]);
        printk("current's data_base = 0x%08x,new page = 0x%08x\n",data_base,shm_list[shmid].page);
    
        brk = current->brk + data_base;
        current->brk += PAGE_SIZE;
    
        if(put_page(shm_list[shmid].page, brk) == 0)
            return (void *)-ENOMEM;
    
        return (void *)(current->brk - PAGE_SIZE);
    }
    

    然后修改Kernel下的Makefile文件

    ### Dependencies:
    sem.s sem.o: sem.c ../include/linux/sem.h ../include/linux/kernel.h \
    ../include/unistd.h
    shm.s shm.o:shm.c ../include/unistd.h ../include/linux/kernel.h ../include/linux/sched.h ../include/linux/mm.h ../include/errno.h
    ...
    

    在这里插入图片描述
    在这里插入图片描述

    5. 编写消费者和生产者程序

    在usr/root下添加producer.c和consumer.c
    Producer.c代码如下:
    里面的相关函数参考之前写的shm.c,因为我在第四个实验中把sem.h分出来了,所有需要在这里面#include <linux/sem.h>,consumer.c也是一样。

    /*producer*/ 
    #define __LIBRARY__
    #include <stdio.h>
    #include <unistd.h>
    #include <linux/kernel.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <linux/sem.h>
    
    _syscall2(sem_t *,sem_open,const char *,name,int,value);
    _syscall1(int,sem_post,sem_t *,sem);
    _syscall1(int,sem_wait,sem_t *,sem);
    
    _syscall1(int, shmat, int, shmid);
    _syscall2(int, shmget, unsigned int, key, size_t, size);
    
    #define PRODUCE_NUM 200
    #define BUFFER_SIZE 10
    #define SHM_KEY 2018
    
    int main(int argc, char* argv[])
    {
        sem_t *Empty,*Full,*Mutex;    
        int i, shm_id, location=0;
        int *p;
    
        Empty = sem_open("Empty", BUFFER_SIZE);
        Full = sem_open("Full", 0);
        Mutex = sem_open("Mutex", 1);
    
        if((shm_id = shmget(SHM_KEY, BUFFER_SIZE*sizeof(int))) < 0)
            printf("shmget failed!");    
    
        if((p = (int * )shmat(shm_id)) < 0)
            printf("shmat error!");
        for(i=0; i<PRODUCE_NUM; i++)
        {
            sem_wait(Empty);
            sem_wait(Mutex);
    
            p[location] = i;
    
            sem_post(Mutex);
            sem_post(Full);
            location  = (location+1) % BUFFER_SIZE;
        }
        return 0;    
    }
    

    Consumer.c代码如下:

    /*consumer*/ 
    #define __LIBRARY__
    #include <stdio.h>
    #include <unistd.h>
    #include <linux/kernel.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <linux/sem.h>
    
    _syscall2(sem_t *,sem_open,const char *,name,int,value);
    _syscall1(int,sem_post,sem_t *,sem);
    _syscall1(int,sem_wait,sem_t *,sem);
    _syscall1(int,sem_unlink,const char*,name);
    
    _syscall1(int, shmat, int, shmid);
    _syscall2(int, shmget, unsigned int, key, size_t, size);
    
    #define PRODUCE_NUM 200
    #define BUFFER_SIZE 10
    #define SHM_KEY 2018
    
    int main(int argc, char* argv[])
    {
        sem_t *Empty,*Full,*Mutex;    
        int used = 0, shm_id,location = 0;
        int *p;
    
        Empty = sem_open("Empty", BUFFER_SIZE);
        Full = sem_open("Full", 0);
        Mutex = sem_open("Mutex", 1);
    
        if((shm_id = shmget(SHM_KEY, BUFFER_SIZE*sizeof(int))) < 0)
            printf("shmget failed!\n");    
    
        if((p = (int * )shmat(shm_id)) < 0)
            printf("link error!\n");
        while(1)
        {
            sem_wait(Full);
            sem_wait(Mutex);
    
            printf("pid %d:\tconsumer consumes item %d\n", getpid(), p[location]);
            fflush(stdout);
    
            sem_post(Mutex);     
            sem_post(Empty);
            location  = (location+1) % BUFFER_SIZE;
    
            if(++used == PRODUCE_NUM)
                break;
        }
    
        sem_unlink("Mutex");
        sem_unlink("Full");
        sem_unlink("Empty");
        return 0;    
    }
    

    运行bochs,输入:
    gcc -o pro producer.c
    gcc -o con consumer.c
    编译这两个程序,
    然后输入
    pro > proOutput &
    con > conOutput &
    来同时运行这两个程序,并将结果保存到proOutput和conOutput中。
    最后输入sync
    在这里插入图片描述
    关闭linux-0.11回到ubunt终端,输入sudo less hdc/usr/root/conOutput查看结果如下:
    在这里插入图片描述

    展开全文
  • iPhone使用smb查看Windows共享文件夹

    千次阅读 2020-06-25 16:54:10
    Windows端设置 打开Windows的smb功能 ...在设置界面搜索框中搜索“控制面板” ... ...Windows共享设置 ...点击前往,控制面板\网络和 Internet\网络和共享中心\高级共享设置 在高级共享设置中配置“密码保护...建立共享文件夹,

    Windows端设置

    打开Windows的smb功能

    1. 点击Windows“开始”按钮,再点击 “设置”
    2. 在设置界面搜索框中搜索“控制面板”
    3. 打开控制面板,点击“程序”-“程序和功能”-“启用或关闭Windows功能”
    4. 在弹出对话框中勾选SMB1.0支持,点击确定。
    5. 在这里插入图片描述在这里插入图片描述在这里插入图片描述
      在这里插入图片描述

    Windows共享设置

    1. 点击前往,控制面板\网络和 Internet\网络和共享中心\高级共享设置
    2. 在高级共享设置中配置“密码保护的共享”选项中选择“无密码保护的共享”,点击保存修改
      在这里插入图片描述

    Windows建立共享文件夹

    1. 建立共享文件夹,我这里命名“share-smb”
    2. 文件夹右击:属性-共享-共享(S)
    3. 选择要与其共享的用户:Everyone,点击添加,共享。(也可以更改权限,这样可以把iPhone的文件拷贝到Windows)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    iPhone端设置

    1. 打开APP“文件”
    2. 点击右上角…,点击“连接服务器”,在服务器地址栏填写smb://<windows的IP>
    3. 然后填写Windows电脑的用户名和密码
    4. 即可看到共享的文件夹“share-smb”
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • 在Linux下查看共享文件夹

    万次阅读 2016-04-08 23:08:23
    smbclient是samba的Linux客户端,在Linux机器上用来查看服务器上的共享资源,也可以向ftp一样,用户可以等里samba服务器,也可以上传put和下载get文件,遗憾的是中文支持不够好。 方案一 在文件夹浏览器中输入:smb...
  • win10电脑用lp地址连接共享打印机

    万次阅读 2017-12-27 20:02:11
    查看电脑ip地址,按“win+R”进入“运行”框,输入“cmd”,点击确定按钮,接下来输入“ipconfig”再按“Enter”键,其中“ipv4地址”就是你电脑的ip地址。 在(1)之后,会跳出一个界面,让你输入用户名和密码
  • 磁盘的共享查看、设置、删除

    千次阅读 2013-12-13 12:09:47
    原创地址:http://blog.csdn.net/u012830807
  • net use 列出本机网络连接net use \IP\ipc “密码” /user:”帐号” 建立与指定IP的IPC的连接net use F: \\192.168.245.132\Software 123456 /user:adminnet use z: \IP\c “密码” /user:”帐号” 将对方的c盘映射...
  • Axure RP 9如何查看共享HTML

    千次阅读 2019-05-14 16:38:38
    本篇文章将详细讲解Axure RP 9汉化教程——Axure RP 9如何查看共享HTML?查看web浏览器中的HTML输出 最好定期在您要定位的网络浏览器或浏览器中查看您的网页,特别是如果它们是旧版本的Internet Explorer。随着您...
  • UOS系统和Windows进行文件共享的前提条件是两台电脑在同一个局域网内。 同一个局域网内 即uos系统和Windows系统的...3.查看uos系统本机的IP地址,只需把鼠标放在这个位置即可。 4.这里我们以win10为例,通过快捷键 win
  • 打印机共享

    千次阅读 2015-01-16 16:14:57
    http://blog.csdn.net/pipisorry/article/details/42778163本文主要说明在win7, win8, win10, linux(ubuntu)怎么在局域网及广域网上设置打印机远程共享。连接打印机电脑的主机上的设置(for win7&win8)(这个是连接...
  • 在一次跟踪路由的网络操作时发现自己路由器下一跳路由节点的IP地址比较奇怪,是100.64.0.1。好奇促使我查询了这个IP地址的归属,结果是保留地址,到这里觉得比较奇怪了,按照常理以IPv4为例保留的IP地址一般为以下几...
  • Linux下共享内存编程(共享存储空间)

    万次阅读 多人点赞 2018-07-29 23:44:08
    共享存储允许两个或多个进程共享一个给定的存储区,是进程间通信...③shmat函数获取第一个可用共享内存空间的地址 ④shmdt函数进行分离(对共享存储段操作结束时的步骤,并不是从系统中删除共享内存和结构) ⑤shm...
  • tomcat ip地址访问项目 映射共享目录

    千次阅读 2015-05-26 15:08:15
    先说第一个问题,怎么样直接通过IP地址访问项目? web项目正常访问都是http://192.168.1.1:8080/demo ,包括ip,端口和项目名称。直接通过ip访问,不需要输入端口和项目名称需要在tomcat,conf目录下server.xml...
  • VMware中ubuntu虚拟机与windows的端口映射,共享一个IP地址
  • 同一局域网 或者同一个路由器 WIN7系统(由于没有xp的系统无法测试 见谅)第一步:设置要共享的电脑(A电脑 B电脑 或者C电脑设置均要一样) 打开网络共享中心 设置看图片 上图 第二步:选择要共享的文件或者...
  • (及整合高仿微信朋友圈大图查看,拖拽退出。在文章末尾贴出) 废话不多说直接上图 1、滑动改变item 2、滑动列表不可见,列表下滑 图1是本地资源文件展示。目的是怕时间过久,网络url失效。图2是网络url...
  • 共享内存

    千次阅读 2015-08-17 11:55:02
    当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。 共享内存的特点: 1)共享内存是进程间共享数据的一种最快的方法。  一个进程向共享的内存区域写入了数据,共享这个内存...
  • 文件共享服务器

    千次阅读 2019-10-05 19:48:21
    共享服务器概述 通过网络提供文件共享服务, 提供文件下载和上传服务(类似于FTP服务器) 创建共享 方法:文件夹右键属性--共享--开启共享--设置共享名--设置共享权限 注: 1)在本地登录时,只受NTFS权限的...
  • 一 : 关于Windows的默认共享介绍 网上其实到处都有谈论到,现我也只是整理一下: 在在Windows 系统中,在“我的电脑”上右击“管理”,依次...当然在cmd命令下输入net share 同样可以查看得到。 IPC$、ADMIN$、C...
  • 如何将WiFi密码转成二维码进行共享,项目地址:https://github.com/lexsaints/wifi-card
  • 最近,有一些刚刚安装 win10正式版系统 的用户反映自己因为工作需求想要在局域网内设置文件夹共享,却又不知道该如何操作。这该怎么办呢?接下来,小编就向大家介绍windows10正式版系统中快速设置共享文件夹的两种...
  • Ubuntu: 共享目录给windows用户

    千次阅读 2017-08-21 16:54:30
    安装 samba 软件sudo apt-get install samba设置文件夹共享属性  右键单击需要共享的文件夹,选择Local Network Share,打开Folder Sharing选项框:   赋予权限: ...共享地址  查看本机局域网中
  • 局域网实现资源共享和打印机共享

    千次阅读 2014-05-14 15:04:40
    一、如何实现资源共享 1.组建局域网 买个4lan口的小路由器,或者交换机 把所有电脑接在一起就是一个局域网,设置同一个网段的ip地址。就可以共享访问。...也可以使用局域网查看工具来 搜索所有的共享信息
  • 服务器共享文件夹

    千次阅读 2019-11-13 13:15:11
    方法一:centos与windows的共享文件夹 使用samba实现共享文件夹 第一步:检查是否已经安装samba rpm -qi samba 第二步:未安装,安装samba, 如果已安装,请忽略; yum -y install samba samba-client 第三步:共享...
  • Samba 是linux中的一个共享服务,可以让linux,windows 互相共享,今天来搭建一下。这里用的镜像里的包。rpm -ivh samba-3.6.9-164.el6.x86_64 # 下载sambavim /etc/samba/smb.conf #配置文件先搞一个匿名的访问。 ...
  • 共享内存及其用mmap实现共享内存

    千次阅读 2016-08-01 00:32:49
    进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访
  • “Windows访问windows“的共享文件 A设置共享文件夹:我们假设给A电脑设置共享文件,以便B访问,windows共享文件比较简单,直接在A电脑上右击要分享的文件,点击"属性"->"共享"->“共享”,在输入框输入guest...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 325,176
精华内容 130,070
关键字:

共享地址怎么查看